Heim >Backend-Entwicklung >C++ >Wie kann man geklonte Subarrays in C# effizient erstellen?

Wie kann man geklonte Subarrays in C# effizient erstellen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-18 20:43:39150Durchsuche

How to Efficiently Create Cloned Subarrays in C#?

Erstellen Sie effizient geklonte Subarrays in C#

Bei der Arbeit mit Arrays ist es oft notwendig, ein Subarray zu erstellen, das einen bestimmten Bereich von Elementen aus einem vorhandenen Array enthält. Dies kann zwar durch manuelles Schleifen und Kopieren von Elementen erreicht werden, es gibt jedoch effizientere und sauberere Methoden.

Um geklonte Subarrays zu erstellen, können Erweiterungsmethoden verwendet werden. So geht's:

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

So verwenden Sie es:

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

Für geklonte Subarrays, deren Elemente komplexe Objekte sind, können Sie Serialisierung für tiefes Kopieren verwenden:

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

Diese Methode erfordert, dass das Objekt serialisierbar ist.

Das obige ist der detaillierte Inhalt vonWie kann man geklonte Subarrays in C# effizient erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn