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>
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>
Output:
<code>3 4 5 6 7</code>
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>
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!