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
Freigeben: 2025-01-18 20:22:08
Original
165 Leute haben es durchsucht

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.

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;
}
Nach dem Login kopieren

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:

int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] sub = data.SubArray(3, 4); // 结果为 {3, 4, 5, 6}
Nach dem Login kopieren

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.

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);
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage