Rumah >pembangunan bahagian belakang >C++ >Bila dan Mengapa Gunakan `ref` dengan Jenis Rujukan dalam C#?

Bila dan Mengapa Gunakan `ref` dengan Jenis Rujukan dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-06 20:41:13516semak imbas

When and Why Use `ref` with Reference Types in C#?

Memahami Peranan "ref" dalam Pembolehubah Jenis Rujukan Melepasi dalam C

Dalam C#, pembolehubah boleh sama ada jenis nilai atau jenis rujukan. Apabila menghantar jenis nilai kepada kaedah, kata kunci ref digunakan untuk mengubah tingkah laku. Walau bagaimanapun, untuk jenis rujukan, tujuan rujukan adalah kurang intuitif.

Gelagat Lulus Jenis Rujukan Lalai

Dalam C#, jenis rujukan sentiasa dihantar kepada kaedah sebagai rujukan, walaupun tanpa kata kunci ref. Ini bermakna pengubahsuaian kepada rujukan dalam kaedah akan mempengaruhi pembolehubah asal di luar kaedah. Untuk menggambarkan:

var x = new Foo();
void Bar(Foo y)
{
    y.Name = "2"; // Modification to the reference within the method
}

Bar(x);

Console.WriteLine(x.Name); // Output: "2"

Dalam contoh ini, walaupun kita menghantar x ke kaedah Bar tanpa kata kunci ref, nilai x.Name masih diubah suai, menunjukkan tingkah laku lulus rujukan rujukan- jenis.

Peranan Unik "ref" dengan Rujukan-Jenis

Manakala kata kunci rujukan lazimnya tidak diperlukan untuk hantaran jenis rujukan, ia memainkan peranan penting dalam senario tertentu: menugaskan semula rujukan itu sendiri. Tanpa rujukan, sebarang pengubahsuaian dalam kaedah hanya akan menjejaskan rujukan tempatan yang dihantar kepada kaedah, menjadikan pembolehubah asal tidak berubah. Walau bagaimanapun, dengan ref, anda boleh menukar rujukan sebenar yang ditunjukkan oleh pembolehubah. Berikut ialah contoh:

Foo foo = new Foo("1");

void Bar(ref Foo y)
{
    y = new Foo("2"); // Reassigning the reference y points to
}

Bar(ref foo);

Console.WriteLine(foo.Name); // Output: "2"

Dalam senario ini, kata kunci ref membolehkan kami menetapkan semula rujukan yang ditunjuk oleh foo, mengubah nilai foo dengan berkesan.

Atas ialah kandungan terperinci Bila dan Mengapa Gunakan `ref` dengan Jenis Rujukan 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