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

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

Linda Hamilton
Lepaskan: 2025-01-06 20:33:41
asal
352 orang telah melayarinya

When and Why Use

Memahami Penggunaan "ref" dengan Pembolehubah Jenis Rujukan dalam C#

Walaupun jelas bahawa kata kunci "ref" membolehkan kita untuk lulus rujukan kepada pembolehubah jenis nilai mengikut nilai, kepentingannya dengan jenis rujukan mungkin kurang jelas. Artikel ini meneroka kes penggunaan khusus "ref" dengan pembolehubah jenis rujukan.

Pertimbangkan kelas berikut:

public class Foo
{
    public string Name;

    public Foo(string name)
    {
        Name = name;
    }
}
Salin selepas log masuk

Meluluskan Pembolehubah Jenis Rujukan mengikut Nilai lwn. Rujukan:

Tanpa kata kunci "ref", lulus pembolehubah jenis rujukan (cth., "x") kepada kaedah masih memberikan rujukan, bukan salinan. Ini bermakna kaedah tersebut beroperasi pada objek asal. Contohnya:

var x = new Foo("1");

void Bar(Foo y)
{
    y.Name = "2";
}

Bar(x); // changes the Name property of the original object
Salin selepas log masuk

Menggunakan "ref" untuk Mengubah Rujukan Pembolehubah Jenis Rujukan:

Walau bagaimanapun, kata kunci "ref" dengan jenis rujukan pembolehubah berfungsi untuk tujuan tertentu: ia membolehkan kita menukar rujukan pembolehubah dalam kaedah. Contohnya:

Foo foo = new Foo("1");

void Bar(ref Foo y)
{
    y = new Foo("2"); // creates a new object and assigns it to y
}

Bar(ref foo); // changes the reference of 'foo' to point to the new object
Salin selepas log masuk

Dalam kes ini, selepas memanggil "Bar(ref foo)", "foo" tidak lagi akan merujuk objek asal tetapi sebaliknya akan merujuk objek yang baru dibuat dengan sifat Name "2 ".

Aplikasi Praktikal:

Kefungsian ini boleh berguna dalam senario yang kita mahu kembalikan objek baharu daripada kaedah tanpa perlu menghantar semula rujukan secara eksplisit sebagai parameter keluar. Sebagai contoh, kita boleh mencipta kaedah yang mencari dan mengembalikan elemen pertama dalam senarai yang memenuhi kriteria tertentu:

public static T FindFirst<T>(List<T> list, Func<T, bool> predicate) where T : class
{
    foreach (T item in list)
    {
        if (predicate(item))
            return item;
    }

    return null;
}
Salin selepas log masuk

Menggunakan kata kunci "ref" dalam kaedah ini membolehkan kami mengelak daripada membuat parameter keluar sementara masih dapat mengembalikan objek yang ditemui.

Atas ialah kandungan terperinci Bila dan Mengapa Gunakan 'ref' dengan Pembolehubah Jenis Rujukan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan