Maison >développement back-end >C++ >Comment créer efficacement des sous-tableaux clonés en C# ?

Comment créer efficacement des sous-tableaux clonés en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-18 20:43:39150parcourir

How to Efficiently Create Cloned Subarrays in C#?

Créez efficacement des sous-tableaux clonés en C#

Lorsque vous travaillez avec des tableaux, il est souvent nécessaire de créer un sous-tableau contenant une plage spécifique d'éléments à partir d'un tableau existant. Bien que cela puisse être réalisé en bouclant et en copiant manuellement des éléments, il existe des méthodes plus efficaces et plus propres.

Pour créer des sous-tableaux clonés, des méthodes d'extension peuvent être utilisées. Voici comment procéder :

<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>

Comment l'utiliser :

<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>

Pour les sous-tableaux clonés dont les éléments sont des objets complexes, vous pouvez utiliser la sérialisation pour la copie profonde :

<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>

Cette méthode nécessite que l'objet soit sérialisable.

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:
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