Kaedah Sambungan C# dan ref
Parameter: Perspektif Sejarah
Mengapa kaedah sambungan C# tidak boleh menggunakan kata kunci ref
pada parameter pertama mereka sebelum versi 7.2? Had ini berpunca daripada pilihan reka bentuk asas:
this
Tersirat: Parameter this
tersirat (contoh kaedah sambungan beroperasi) telah dianggap sebagai jenis nilai, mengukuhkan lagi gelagat nilai pas-demi-. Pengkompil mengoptimumkan penghantarannya, menghalang pengubahsuaian ref
.Revolusi C# 7.2
C# 7.2 memperkenalkan perubahan ketara:
ref
Sokongan Parameter: Sekatan penggunaan ref
untuk parameter pertama telah ditarik balik. Ini membenarkan jenis nilai (struktur) dihantar melalui rujukan, membolehkan pengubahsuaian terus data asal.Contoh: Menggunakan ref
dalam Kaedah Sambungan
<code class="language-csharp">// Extension method with ref parameter public static void UpdateValue(this ref MyStruct myStruct, string newValue) { myStruct.Value = newValue; } // Usage MyStruct myStruct = new MyStruct { Value = "Old Value" }; myStruct.UpdateValue("New Value"); // Modifies the original myStruct</code>
Kebaikan dan Pertimbangan Utama:
Peningkatan ini meningkatkan kuasa dan fleksibiliti kaedah sambungan, terutamanya apabila bekerja dengan jenis nilai. Walau bagaimanapun:
this
Parameter Kekal Nilai Mengikut: Parameter this
tersirat terus diluluskan mengikut nilai.Perubahan dalam C# 7.2 ini meningkatkan keupayaan kaedah sambungan dengan ketara, menjadikannya lebih serba boleh untuk memanipulasi data jenis nilai.
Atas ialah kandungan terperinci Mengapa Kaedah Sambungan Tidak Boleh Menggunakan `ref` pada Parameter Pertamanya Sebelum C# 7.2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!