Melalui Rujukan dalam C#: Tatasusunan dan Senarai
Banyak bahasa pengaturcaraan, termasuk C#, menyediakan jenis rujukan dan jenis nilai. Mengenai mekanisme lulus tatasusunan dan senarai, persoalan biasa timbul: adakah ia diluluskan melalui rujukan atau nilai secara lalai?
Array dan Senarai dalam C#
Dalam C#, tatasusunan dan senarai ialah jenis rujukan. Ini bermakna ia disimpan dalam timbunan terurus dan dirujuk oleh penunjuk. Apabila menghantar jenis rujukan, rujukan itu sendiri diluluskan oleh nilai.
Mekanisme penghantaran lalai
Oleh itu, dalam C#, tatasusunan dan senarai diluluskan secara lalai. Mekanisme lulus ini bermakna bahawa sebarang perubahan yang dibuat dalam kaedah atau fungsi kepada kandungan tatasusunan atau senarai yang diluluskan akan ditunjukkan dalam kod panggilan. Walau bagaimanapun, menetapkan semula tatasusunan atau senarai yang diluluskan dalam kaedah atau fungsi tidak akan kelihatan dalam kod panggilan.
Contoh
Pertimbangkan coretan kod berikut:
<code class="language-csharp">void Foo(int[] data) { data[0] = 1; // 更改数组内容,在调用代码中可见 } void Bar(int[] data) { data = new int[20]; // 重新分配数组,在调用代码中不可见 }</code>
Gunakan rujukan lulus untuk mengoptimumkan prestasi
Dalam sesetengah kes, menghantar tatasusunan atau senarai melalui rujukan boleh meningkatkan prestasi program anda. Ini kerana ia mengelakkan penyalinan keseluruhan struktur data, yang boleh menjadi sangat mahal untuk set data yang besar.
Untuk menghantar tatasusunan atau senarai dengan rujukan, anda boleh menggunakan pengubah suai "ref" apabila mengisytiharkan parameter fungsi. Pengubah suai ini secara jelas menunjukkan bahawa rujukan itu sendiri akan diluluskan melalui rujukan, bukan hanya nilainya.
Contoh
<code class="language-csharp">void Baz(ref int[] data) { data[0] = 1; // 更改数组内容,在调用代码中可见 data = new int[20]; // 重新分配数组,在调用代码中可见 }</code>
Dengan menggunakan pengubah suai "ref", perubahan pada kandungan dan penugasan semula tatasusunan dalam fungsi "Baz" akan kelihatan dalam kod panggilan. Perlu diingat bahawa jika anda tidak perlu mengubah suai rujukan itu sendiri dalam kaedah atau fungsi, ia biasanya disyorkan untuk mengelak daripada menggunakan pengubah suai "ref", kerana ia boleh menyebabkan kekeliruan kod.
Atas ialah kandungan terperinci Bagaimanakah Tatasusunan dan Senarai Diluluskan dalam C#: Dengan Rujukan atau Mengikut Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!