拡張メソッドを使用して配列サブセットを効率的に複製する
配列を扱う場合、多くの場合、いくつかの要素を含む新しい配列を作成する必要があります。ループでもこれを実現できますが、拡張メソッドを使用する方がよりクリーンなアプローチです。
<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>
この拡張メソッドは T[]
型を拡張し、指定されたインデックスから始まる指定された長さの要素を含む新しい配列を返します。例:
<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>
ディープ クローン アレイ サブセット
配列のサブセットのディープ クローン (各要素もコピー) が必要な場合は、シリアル化を使用できます。
<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>
このディープ クローン作成では、オブジェクトが [Serializable]
または ISerializable
経由でシリアル化可能である必要があることに注意してください。
以上が拡張メソッドを使用して C# で配列要素のサブセットを効率的に複製するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。