C# propose des méthodes efficaces pour extraire des parties de tableaux d'octets, un processus connu sous le nom de découpage de tableau. Cette technique évite la copie inutile des données, améliorant ainsi les performances.
ArraySegment<T>
La classe ArraySegment<T>
fournit un moyen léger de représenter une partie d'un tableau. C'est idéal pour découper sans créer de nouveau tableau, économisant ainsi la mémoire.
<code class="language-csharp">byte[] foo = new byte[4096]; var slice = new ArraySegment<byte>(foo, 0, 40);</code>
Cela crée slice
, représentant les 40 premiers octets de foo
.
IEnumerable<byte>
Pour parcourir le tableau découpé, convertissez le ArraySegment<byte>
en IEnumerable<byte>
à l'aide de la méthode d'extension AsEnumerable()
(disponible dans .NET 3.5 et versions ultérieures) :
<code class="language-csharp">IEnumerable<byte> sliceAsEnumerable = slice.AsEnumerable();</code>
sliceAsEnumerable
permet désormais une itération facile sur les octets sélectionnés.
Alternativement, la méthode Take()
de LINQ offre une manière concise d'obtenir le même résultat :
<code class="language-csharp">IEnumerable<byte> slicedBytes = foo.Take(40);</code>
Cela donne également un IEnumerable<byte>
contenant les 40 premiers octets de foo
.
C# fournit un découpage de tableau flexible via ArraySegment<T>
pour l'efficacité de la mémoire et Take()
de LINQ pour un code concis. Les deux sont des outils précieux pour gérer les segments de tableau, en particulier dans des applications telles que la programmation réseau où une manipulation efficace des octets est cruciale.
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!