ホームページ >バックエンド開発 >C++ >拡張メソッドを使用して C# で配列要素のサブセットを効率的に複製するにはどうすればよいですか?

拡張メソッドを使用して C# で配列要素のサブセットを効率的に複製するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 20:22:08167ブラウズ

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

拡張メソッドを使用して配列サブセットを効率的に複製する

配列を扱う場合、多くの場合、いくつかの要素を含む新しい配列を作成する必要があります。ループでもこれを実現できますが、拡張メソッドを使用する方がよりクリーンなアプローチです。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。