Rumah >pembangunan bahagian belakang >C++ >Adakah Tatasusunan dan Senarai C# Diluluskan melalui Rujukan atau Mengikut Nilai?

Adakah Tatasusunan dan Senarai C# Diluluskan melalui Rujukan atau Mengikut Nilai?

Linda Hamilton
Linda Hamiltonasal
2025-01-10 10:51:45736semak imbas

Are C# Arrays and Lists Passed by Reference or by Value?

Adakah tatasusunan dan senarai C# diluluskan secara rujukan secara lalai?

Tatasusunan dan senarai ialah struktur data penting dalam C#, dan memahami tingkah lakunya apabila dihantar ke fungsi adalah penting untuk pengekodan yang cekap.

Adakah mereka lulus dengan rujukan?

Tidak, tatasusunan dan senarai dalam C# tidak diluluskan secara rujukan secara lalai. Sebaliknya, rujukan mereka diluluskan mengikut nilai. Ini bermakna bahawa sebarang pengubahsuaian yang dibuat pada kandungan tatasusunan atau senarai akan kelihatan kepada pemanggil, tetapi penugasan semula kepada tatasusunan atau senarai itu sendiri tidak akan ditunjukkan kembali kepada pemanggil.

Mengapa tidak lulus dengan rujukan?

Melalui tatasusunan atau senarai melalui rujukan boleh melambatkan pelaksanaan program dengan ketara kerana salinan baharu keseluruhan tatasusunan atau senarai perlu dibuat setiap kali fungsi dipanggil. Overhed ini akan menjadi ketara terutamanya untuk set data yang besar.

Bila hendak lulus melalui rujukan

Dalam kes yang jarang berlaku, jika anda mahu pemanggil melihat perubahan pada kandungan dan rujukan itu sendiri, anda boleh menghantar rujukan secara eksplisit melalui rujukan menggunakan pengubah suai ref. Walau bagaimanapun, ini harus dilakukan dengan berhati-hati kerana ia boleh menimbulkan kerumitan dan kemungkinan ralat.

Contoh

Pertimbangkan kod berikut:

<code class="language-c#">void Foo(int[] data) {
    data[0] = 1; // 调用者可以看到此更改
}
void Bar(int[] data) {
    data = new int[20]; // 但看不到此更改
}</code>

Dalam fungsi pertama Foo, sebarang perubahan yang dibuat pada kandungan tatasusunan akan kelihatan kepada pemanggil kerana rujukan kepada tatasusunan diluluskan oleh nilai. Walau bagaimanapun, dalam Bar fungsi kedua, penugasan semula tatasusunan tidak kelihatan kepada pemanggil kerana rujukan itu sendiri diluluskan oleh nilai.

Kesimpulan

Dalam kebanyakan kes, mempunyai tatasusunan dan senarai yang diluluskan mengikut nilai akan memberikan prestasi terbaik dan mengurangkan risiko memperkenalkan ralat. Melulus melalui rujukan hanya boleh dilakukan secara eksplisit apabila perlu menggunakan pengubah suai ref.

Atas ialah kandungan terperinci Adakah Tatasusunan dan Senarai C# Diluluskan melalui Rujukan atau Mengikut Nilai?. 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