Kepentingan "ref" untuk Pembolehubah Jenis Rujukan dalam C#
Pengaturcara C# sering menemui kata kunci "ref" apabila bekerja dengan rujukan -jenis pembolehubah, seperti kelas. Walaupun gelagat "ref" dengan jenis nilai terkenal, tujuannya untuk jenis rujukan mungkin kurang jelas.
Latar Belakang
Apabila menghantar nilai -taip mengikut nilai tanpa kata kunci "ref", salinan pembolehubah dibuat dan dihantar ke kaedah. Walau bagaimanapun, dengan jenis rujukan, menghantarnya tanpa "ref" sudah melibatkan merujuk pembolehubah itu sendiri.
Penggunaan "ref" dengan Reference-Types
Jadi, apakah faedah menggunakan "ref" dengan jenis rujukan? Perbezaan utama terletak pada keupayaan untuk menetapkan semula rujukan pembolehubah.
Contoh
Pertimbangkan contoh berikut:
var x = new Foo(); // Without "ref" void Bar(Foo y) { y.Name = "2"; } // With "ref" void Bar(ref Foo y) { y.Name = "2"; } // Test Bar(x);
Dalam kes pertama , y ialah rujukan kepada x, dan mengubah suai y.Name mengemas kini objek. Walau bagaimanapun, kes kedua, menggunakan "ref," membolehkan kami melakukan sesuatu yang unik.
Di dalam kaedah Bar dengan "ref," kita boleh menetapkan semula rujukan yang y tunjuk. Contohnya:
Foo foo = new Foo("1"); // Reassign reference via "ref" void Bar(ref Foo y) { y = new Foo("2"); } Bar(ref foo); // After Bar() call Console.WriteLine(foo.Name);
Di sini, panggilan ke Bar(ref foo) secara berkesan menugaskan tika Foo baharu kepada foo. Ini bermakna pembolehubah foo asal kini menunjuk ke objek berbeza dengan nama "2."
Kesimpulan
Oleh itu, "ref" dengan jenis rujukan menyediakan fleksibiliti untuk menetapkan semula rujukan objek, membenarkan senario lanjutan yang tidak mungkin berlaku sebaliknya.
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!