Maison > développement back-end > C++ > Comment cloner efficacement une gamme d'éléments de tableau en C# ?

Comment cloner efficacement une gamme d'éléments de tableau en C# ?

Patricia Arquette
Libérer: 2025-01-18 20:25:10
original
471 Les gens l'ont consulté

How to Efficiently Clone a Range of Array Elements in C#?

Compétences en matière de clonage de plages d'éléments de tableau C#

Dans le développement de programmes, il est souvent nécessaire d'exploiter certains éléments d'un tableau. Un moyen efficace consiste à créer un nouveau tableau contenant uniquement les éléments requis. En C#, cela peut être réalisé grâce à des méthodes d’extension.

Méthode d'extension pour créer un sous-tableau

Pour créer un sous-tableau contenant une plage d'éléments spécifiée, vous pouvez définir la méthode d'extension suivante :

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

Cette méthode reçoit le tableau d'origine, l'index du premier élément à contenir et la longueur du nouveau tableau. Il renvoie un nouveau tableau contenant un sous-ensemble spécifié d'éléments.

Exemples d'utilisation

Considérons l'exemple suivant :

<code class="language-csharp">int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

// 创建一个包含索引3到索引7的元素的子数组
int[] subarray = data.SubArray(3, 5); // 注意长度为5,包含索引3,4,5,6,7

// 输出子数组
Console.WriteLine(string.Join(" ", subarray));</code>
Copier après la connexion

Sortie :

<code>3 4 5 6 7</code>
Copier après la connexion

Clonage profond

Si vous avez besoin d'un clone profond (c'est-à-dire un nouveau tableau où les éléments eux-mêmes sont des clones plutôt que des références), vous pouvez utiliser une technique plus sophistiquée impliquant la sérialisation et la désérialisation. Voici une méthode d'extension mise à jour pour le clonage profond :

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

Cette méthode crée d'abord un nouveau tableau, y copie la plage d'éléments spécifiée du tableau d'origine, puis utilise la sérialisation pour créer un clone profond des objets du sous-tableau. Notez que les objets du tableau d'origine doivent être sérialisables. BinaryFormatter a été marqué comme obsolète et il est recommandé d'utiliser des méthodes de sérialisation plus modernes telles que System.Text.Json. Cet exemple sert uniquement à comprendre le principe et doit être remplacé par une méthode de sérialisation plus sûre dans les applications réelles.

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