ref dan pengubah keluar dalam kaedah sambungan C#
Dalam kaedah sambungan yang memanjangkan jenis rujukan, parameter pertama tidak boleh menggunakan pengubah suai ref
atau out
. Walau bagaimanapun, bermula dengan C# 7.2, adalah mungkin untuk menambah pengubah suai ref
kepada parameter pertama kaedah sambungan jenis nilai lanjutan (struct).
Sebab pengehadan ini ialah parameter pertama kaedah sambungan dianggap sebagai parameter penerima, yang mewakili tika yang dilanjutkan. Untuk jenis rujukan, parameter penerima sentiasa diluluskan oleh rujukan, jadi menggunakan pengubah suai ref
atau out
adalah berlebihan.
Walau bagaimanapun, untuk jenis nilai, parameter penerima dihantar mengikut nilai, yang bermaksud bahawa sebarang perubahan yang dibuat padanya dalam kaedah sambungan tidak akan ditunjukkan dalam contoh jenis nilai asal. Dengan menggunakan pengubah suai ref
, anda boleh menghantar contoh jenis nilai melalui rujukan, membolehkan anda mengubah suai keadaannya dalam kaedah sambungan.
Contoh:
<code class="language-csharp">public struct MyProperties { public string MyValue { get; set; } } public static class MyExtensions { public static void ChangeMyValue(this ref MyProperties myProperties) { myProperties.MyValue = "hello from MyExtensions"; } } public class MyClass { public MyClass() { MyProperties myProperties = new MyProperties(); myProperties.MyValue = "hello world"; myProperties.ChangeMyValue(); // Now modifies the original myProperties instance } }</code>
Dalam contoh ini, kaedah sambungan ChangeMyValue
boleh mengubah suai keadaan contoh jenis nilai ref
menggunakan pengubah suai MyProperties
. Ambil perhatian bahawa pengubah suai out
masih tidak boleh digunakan pada parameter pertama kaedah sambungan.
Atas ialah kandungan terperinci Bolehkah Ref dan Out Modifiers Digunakan dalam Kaedah Sambungan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!