0 Tage Serie
csharp / intermediate
Snippet

Unter-Arrays ohne Allokation verarbeiten mit Span

Span<T> bietet eine typsichere und speichersichere Sicht auf einen zusammenhängenden Speicherbereich. Im Gegensatz zu Array.Copy oder Substring erstellt das Slicing eines Spans kein neues Objekt auf dem Heap, was die Performance in datenintensiven Anwendungen erheblich verbessert.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
int[] numbers = { 10, 20, 30, 40, 50, 60 };
ReadOnlySpan<int> slice = numbers.AsSpan(2, 3); // Covers 30, 40, 50
int sum = 0;
foreach (int n in slice)
{
sum += n;
}
// No new array is created in memory
Erklärung
1
numbers.AsSpan(2, 3)
Erstellt ein Fenster in das bestehende Array, beginnend bei Index 2 mit einer Länge von 3.
2
foreach (int n in slice)
Iteriert direkt über das Speichersegment, ohne ein Unter-Array zu allozieren.