Maison >développement back-end >C++ >Comment puis-je créer efficacement des tranches de tableau en C# sans copier de données ?
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>
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>
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 :
Dans l'exemple, segment
pointe vers "deux" et "trois" dans le tableau a
.
Avantages de ArraySegment<T>
:
ArraySegment<T>
est plus rapide que la création de nouveaux tableaux.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!