Découpage de tableaux en C#
C# contrairement à Perl peut utiliser directement la syntaxe @bar = @foo[0..40];
pour découper des tableaux. Il existe cependant quelques alternatives pour obtenir des fonctionnalités similaires.
ArraySegment
Pour une option légère qui évite de copier le tableau d'origine, pensez à utiliser ArraySegment<T>
. Il représente une partie contiguë d'un tableau sans copier les éléments sous-jacents :
<code class="language-csharp">byte[] foo = new byte[4096]; var segment = new ArraySegment<byte>(foo, 0, 41);</code>
segment
contient désormais les 41 premiers octets du tableau foo
d'origine. Vous pouvez accéder à son contenu via les attributs Array
et Offset
, ou l'utiliser directement dans une expression LINQ.
LINQ Sauter et prendre
Si vous préférez LINQ, vous pouvez utiliser les méthodes Skip
et Take
pour implémenter le découpage :
<code class="language-csharp">IEnumerable<byte> slice = foo.Skip(0).Take(41);</code>
slice
renverra les 41 premiers octets du tableau foo
sous la forme d'une séquence IEnumerable<byte>
.
Fonction de découpage de tableau personnalisée
Si ni ArraySegment
ni LINQ ne répondent à vos besoins, vous pouvez créer une fonction de découpage de tableau personnalisée à l'aide de plages d'index :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!