Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Erweiterungsmethoden eine Teilmenge von Array-Elementen in C# effizient klonen?

Wie kann ich mithilfe von Erweiterungsmethoden eine Teilmenge von Array-Elementen in C# effizient klonen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-18 20:22:08156Durchsuche

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

Verwenden Sie Erweiterungsmethoden, um Array-Teilmengen effizient zu klonen

Beim Umgang mit Arrays ist es oft notwendig, ein neues Array zu erstellen, das einige Elemente enthält. Während dies mit einer Schleife erreicht werden kann, ist die Verwendung von Erweiterungsmethoden ein saubererer Ansatz.

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

Diese Erweiterungsmethode erweitert den Typ T[] und gibt ein neues Array zurück, das Elemente der angegebenen Länge enthält, beginnend am angegebenen Index. Zum Beispiel:

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

Deep-Clone-Array-Teilmenge

Wenn Sie einen tiefen Klon einer Teilmenge eines Arrays benötigen (jedes Element ist auch eine Kopie), können Sie die Serialisierung 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>

Beachten Sie, dass für dieses tiefe Klonen das Objekt über [Serializable] oder ISerializable serialisierbar sein muss.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Erweiterungsmethoden eine Teilmenge von Array-Elementen in C# effizient klonen?. 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