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 ?

Comment puis-je cloner efficacement un sous-ensemble d'éléments de tableau en C# à l'aide de méthodes d'extension ?

Barbara Streisand
Libérer: 2025-01-18 20:22:08
original
204 Les gens l'ont consulté

How Can I Efficiently Clone a Subset of Array Elements in C# Using Extension Methods?

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.

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;
}
Copier après la connexion

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 :

int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] sub = data.SubArray(3, 4); // 结果为 {3, 4, 5, 6}
Copier après la connexion

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.

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);
    }
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal