Heim >Backend-Entwicklung >C++ >Wie kann ich ein Array in C# aufteilen?

Wie kann ich ein Array in C# aufteilen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-14 20:15:48422Durchsuche

How Can I Slice an Array in C#?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn