Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Erweiterungsmethoden eine Teilmenge von Array-Elementen in C# effizient klonen?
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!