Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengekalkan Rujukan Apabila Menetapkan Nilai kepada Medan Kelas dalam C#?
Memelihara Rujukan dalam Tugasan Medan Kelas dalam C#
Apabila cuba untuk menetapkan nilai dengan merujuk kepada medan kelas, tingkah laku yang tidak dijangka mungkin berlaku. Dalam contoh yang diberikan, memberikan "parameter ref" pada medan mengakibatkan kehilangan rujukan.
Memahami Sekatan
C# mengehadkan pengisytiharan medan sebagai rujukan kepada pembolehubah. Ini disebabkan oleh kemungkinan akibat:
Mengatasi Had
Walaupun medan rujukan sebenar tidak mungkin, terdapat alternatif:
Pilihan 1 : Buat Kelas Pembungkus
Anda boleh mencipta kelas pembungkus yang memegang nilai yang dirujuk sebagai harta. Kelas boleh menyediakan kaedah untuk mendapatkan dan menetapkan nilai, mengekalkan rujukan dengan berkesan.
public class Wrapper { public int Value { get; set; } } ... Wrapper wrapper = new Wrapper { Value = 123 };
Pilihan 2: Gunakan Ungkapan Lambda
Anda boleh menggunakan ungkapan lambda untuk tentukan getter dan setter untuk pembolehubah yang dirujuk. Ini memberikan rujukan kepada pembolehubah melalui perwakilan.
public delegate int Getter(); public delegate void Setter(int value); ... Getter getter = () => y; Setter setter = z => { y = z; };
Kesimpulan
Dengan memahami sebab di sebalik sekatan medan ref dan menggunakan teknik alternatif seperti kelas pembalut atau ungkapan lambda, adalah mungkin untuk mencapai tingkah laku seperti rujukan dalam tugasan medan kelas dalam C#.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Rujukan Apabila Menetapkan Nilai kepada Medan Kelas dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!