Maison >développement back-end >C++ >Comment puis-je cloner efficacement un sous-ensemble d'éléments de tableau en C# à l'aide de méthodes d'extension ?
Utilisez des méthodes d'extension pour cloner efficacement des sous-ensembles de tableaux
Lorsqu'il s'agit de tableaux, il est souvent nécessaire de créer un nouveau tableau contenant certains éléments. Bien qu’une boucle puisse y parvenir, l’utilisation de méthodes d’extension constitue une approche plus propre.
<code class="language-csharp">public static T[] SubArray<T>(this T[] data, int index, int length) { T[] result = new T[length]; Array.Copy(data, index, result, 0, length); return result; }</code>
Cette méthode d'extension étend le type T[]
et renvoie un nouveau tableau contenant des éléments de la longueur spécifiée en commençant à l'index spécifié. Par exemple :
<code class="language-csharp">int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] sub = data.SubArray(3, 4); // 结果为 {3, 4, 5, 6}</code>
Sous-ensemble de tableau de clone profond
Si vous avez besoin d'un clone profond d'un sous-ensemble d'un tableau (chaque élément est également une copie), vous pouvez utiliser la sérialisation.
<code class="language-csharp">public static T[] SubArrayDeepClone<T>(this T[] data, int index, int length) { T[] arrCopy = new T[length]; Array.Copy(data, index, arrCopy, 0, length); using (MemoryStream ms = new MemoryStream()) { var bf = new BinaryFormatter(); bf.Serialize(ms, arrCopy); ms.Position = 0; return (T[])bf.Deserialize(ms); } }</code>
Notez que ce clonage profond nécessite que l'objet soit sérialisable via [Serializable]
ou ISerializable
.
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!