Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Tatasusunan Dihantar kepada Kaedah dalam C#?

Bagaimanakah Tatasusunan Dihantar kepada Kaedah dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-10 10:47:41143semak imbas

How Are Arrays Passed to Methods in C#?

Pemahaman mendalam tentang rujukan tatasusunan yang dihantar dalam C#

Dalam C#, tatasusunan berbeza daripada jenis data asas Ia adalah jenis rujukan. Ini menimbulkan persoalan: bagaimana tatasusunan dihantar ke kaedah? Lulus mengikut nilai atau rujukan?

Lulus nilai

Secara lalai, rujukan tatasusunan dihantar mengikut nilai. Ini bermakna salinan rujukan dibuat dan diserahkan kepada kaedah. Perubahan yang dibuat pada kandungan tatasusunan di dalam kaedah akan kelihatan kepada kod panggilan, tetapi sebarang penugasan semula kepada tatasusunan itu sendiri tidak akan disebarkan kembali kepada pemanggil.

Lulus dengan rujukan

Untuk mengubah suai rujukan itu sendiri, anda boleh menggunakan ref pengubah suai. Melepasi tatasusunan melalui rujukan membolehkan pemanggil melihat sebarang perubahan pada rujukan, termasuk penugasan semula.

Contoh

Kod berikut menunjukkan perbezaan antara lulus dengan nilai dan lulus dengan rujukan:

<code class="language-csharp">void Foo(int[] data) {
    data[0] = 1; // 调用方可见此更改
}
void Bar(ref int[] data) {
    data = new int[20]; // 调用方可见此更改
}</code>

Apabila memanggil Foo, salinan rujukan dihantar. Menukar kandungan tatasusunan dalam Foo akan kelihatan dalam kod panggilan. Walau bagaimanapun, penugasan semula kepada tatasusunan dalam Foo tidak akan dilihat oleh pemanggil.

Sebaliknya, apabila memanggil ref dengan pengubah suai Bar, rujukan itu sendiri diluluskan. Sebarang perubahan pada rujukan, termasuk penugasan semula, akan kelihatan dalam kod panggilan.

Atas ialah kandungan terperinci Bagaimanakah Tatasusunan Dihantar kepada Kaedah dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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