Maison > développement back-end > C++ > Comment puis-je créer efficacement des tranches de tableau en C# sans copier de données ?

Comment puis-je créer efficacement des tranches de tableau en C# sans copier de données ?

Mary-Kate Olsen
Libérer: 2025-01-14 20:12:42
original
349 Les gens l'ont consulté

How Can I Efficiently Create Array Slices in C# Without Copying Data?

Sous-ensembles de tableau C# : gestion efficace des portions de tableau

Les tableaux C#, stockant des éléments d'un seul type de données dans une mémoire contiguë, nécessitent souvent de travailler avec des parties spécifiques sans altérer l'original. Ceci est particulièrement pertinent lorsqu'il s'agit de tableaux étendus, comme dans la communication réseau (par exemple, recevoir un nombre défini d'octets à partir d'un socket). Bien que le découpage direct des tableaux ne soit pas intégré comme dans certains langages, ArraySegment<T> fournit une solution très efficace.

Le défi :

Imaginez un grand tableau d'octets :

<code class="language-csharp">byte[] foo = new byte[4096];</code>
Copier après la connexion

La tâche consiste à extraire les x octets initiaux sans créer de tableau en double ou de IEnumerable<byte> collection.

La ArraySegment<T> Solution :

Au lieu d'un découpage explicite, C# exploite ArraySegment<T> :

<code class="language-csharp">string[] a = { "one", "two", "three", "four", "five" };
var segment = new ArraySegment<string>(a, 1, 2);</code>
Copier après la connexion

ArraySegment<T> agit comme un wrapper léger, référençant une partie d'un tableau existant sans duplication de données.

Compréhension ArraySegment<T> :

Le constructeur ArraySegment<T> prend trois arguments :

  1. Le tableau source.
  2. L'indice de départ (base zéro).
  3. La longueur du sous-ensemble.

Dans l'exemple, segment pointe vers "deux" et "trois" dans le tableau a.

Avantages de ArraySegment<T> :

  • Optimisation de la mémoire :Évite la copie inutile de tableaux, cruciale pour les grands ensembles de données.
  • Gains de performances : L'accès aux éléments via ArraySegment<T> est plus rapide que la création de nouveaux tableaux.
  • Compatibilité LINQ : Intégration transparente avec LINQ pour filtrer et manipuler le sous-ensemble du tableau.

En résumé :

ArraySegment<T> propose une approche rationalisée et efficace pour travailler avec des sous-ensembles de tableaux en C#. Il améliore les performances et réduit la consommation de mémoire, ce qui le rend idéal pour les scénarios impliquant de grandes baies et des opérations réseau.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal