Heim >Backend-Entwicklung >C++ >Wie kann ich ein Array in C# aufteilen?
Array-Slicing in C#
C# kann im Gegensatz zu Perl die @bar = @foo[0..40];
-Syntax direkt zum Schneiden von Arrays verwenden. Es gibt jedoch einige Alternativen, um eine ähnliche Funktionalität zu erreichen.
ArraySegment
Für eine einfache Option, die das Kopieren des ursprünglichen Arrays vermeidet, sollten Sie die Verwendung von ArraySegment<T>
in Betracht ziehen. Es stellt einen zusammenhängenden Teil eines Arrays dar, ohne die zugrunde liegenden Elemente zu kopieren:
<code class="language-csharp">byte[] foo = new byte[4096]; var segment = new ArraySegment<byte>(foo, 0, 41);</code>
segment
enthält jetzt die ersten 41 Bytes des ursprünglichen foo
-Arrays. Sie können über die Attribute Array
und Offset
auf den Inhalt zugreifen oder ihn direkt in einem LINQ-Ausdruck verwenden.
LINQ Skip and Take
Wenn Sie LINQ bevorzugen, können Sie die Methoden Skip
und Take
verwenden, um Slicing zu implementieren:
<code class="language-csharp">IEnumerable<byte> slice = foo.Skip(0).Take(41);</code>
slice
gibt die ersten 41 Bytes des foo
-Arrays als IEnumerable<byte>
-Sequenz zurück.
Benutzerdefinierte Array-Slicing-Funktion
Wenn weder ArraySegment
noch LINQ Ihren Anforderungen entsprechen, können Sie eine benutzerdefinierte Array-Slicing-Funktion mithilfe von Indexbereichen erstellen:
<code class="language-csharp">byte[] Slice(byte[] array, int startIndex, int length) { byte[] slice = new byte[length]; Array.Copy(array, startIndex, slice, 0, length); return slice; } byte[] slice = Slice(foo, 0, 41);</code>
Das obige ist der detaillierte Inhalt vonWie kann ich ein Array in C# aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!