Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengklonkan Rangkaian Elemen Array dengan Cekap dalam C#?

Bagaimana untuk Mengklonkan Rangkaian Elemen Array dengan Cekap dalam C#?

Patricia Arquette
Lepaskan: 2025-01-18 20:25:10
asal
435 orang telah melayarinya

How to Efficiently Clone a Range of Array Elements in C#?

Kemahiran pengklonan julat elemen tatasusunan C#

Dalam pembangunan program, selalunya diperlukan untuk mengendalikan beberapa elemen tatasusunan. Cara yang cekap ialah dengan mencipta tatasusunan baharu yang mengandungi hanya elemen yang diperlukan. Dalam C#, ini boleh dicapai melalui kaedah sambungan.

Kaedah sambungan untuk mencipta subarray

Untuk mencipta subarray yang mengandungi julat elemen tertentu, anda boleh menentukan kaedah sambungan berikut:

<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>
Salin selepas log masuk

Kaedah ini menerima tatasusunan asal, indeks elemen pertama yang terkandung dan panjang tatasusunan baharu. Ia mengembalikan tatasusunan baharu yang mengandungi subset elemen tertentu.

Contoh penggunaan

Pertimbangkan contoh berikut:

<code class="language-csharp">int[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

// 创建一个包含索引3到索引7的元素的子数组
int[] subarray = data.SubArray(3, 5); // 注意长度为5,包含索引3,4,5,6,7

// 输出子数组
Console.WriteLine(string.Join(" ", subarray));</code>
Salin selepas log masuk

Output:

<code>3 4 5 6 7</code>
Salin selepas log masuk

Klon Dalam

Jika anda memerlukan klon dalam (iaitu tatasusunan baharu dengan unsur-unsur itu sendiri adalah klon dan bukannya rujukan), anda boleh menggunakan teknik yang lebih canggih yang melibatkan pensirilan dan penyahserikatan. Berikut ialah kaedah sambungan yang dikemas kini untuk pengklonan dalam:

<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>
Salin selepas log masuk

Kaedah ini mula-mula mencipta tatasusunan baharu, menyalin julat elemen yang ditentukan daripada tatasusunan asal ke dalamnya, dan kemudian menggunakan siri untuk mencipta klon dalam bagi objek dalam subarray. Ambil perhatian bahawa objek dalam tatasusunan asal mestilah boleh bersiri. BinaryFormatter telah ditandakan sebagai usang dan disyorkan untuk menggunakan kaedah bersiri yang lebih moden seperti System.Text.Json. Contoh ini hanya untuk memahami prinsip, dan harus digantikan dengan kaedah bersiri yang lebih selamat dalam aplikasi sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Mengklonkan Rangkaian Elemen Array dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan