Rumah >pembangunan bahagian belakang >C++ >Mengapa C# Tidak Membenarkan Medan Memegang Rujukan, dan Apakah Alternatifnya?
Tugasan Rujukan dalam Medan Kelas C#
Dalam C#, cubaan untuk menetapkan melalui "rujukan" kepada medan kelas boleh mengakibatkan tingkah laku yang tidak dijangka. Pertimbangkan kod berikut:
public class X { public X() { string example = "X"; new Y(ref example); new Z(ref example); System.Diagnostics.Debug.WriteLine(example); } } public class Y { public Y(ref string example) { example += " (Updated By Y)"; } } public class Z { private string _Example; public Z(ref string example) { this._Example = example; this._Example += " (Updated By Z)"; } } var x = new X();
Output yang dijangkakan ialah "X (Dikemas Kini Oleh Y) (Dikemas Kini Oleh Z)", tetapi sebaliknya, hanya "X (Dikemas Kini Oleh Y)" dicetak. Tingkah laku ini berlaku kerana memberikan "parameter rujukan" kepada medan kehilangan rujukan.
Mengapa Medan Tidak Boleh Memegang Rujukan?
Terdapat tiga pilihan yang mungkin apabila mempertimbangkan medan "jenis ref":
Pilihan 1 dipilih untuk memastikan kestabilan program dan menghalang penciptaan bom jangka dalam kod.
Bagaimana untuk Mencapai Tingkah Laku Seperti Rujukan
Walaupun anda tidak boleh mempunyai medan jenis rujukan, terdapat cara alternatif untuk capai tingkah laku seperti rujukan:
Atas ialah kandungan terperinci Mengapa C# Tidak Membenarkan Medan Memegang Rujukan, dan Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!