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, 50int 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.