在 C# 中保留類別欄位賦值中的引用
嘗試透過引用類別欄位來賦值時,可能會出現意外行為。在提供的範例中,為欄位指派「ref 參數」會導致引用遺失。
理解限制
C# 將欄位宣告限制為對變數。這是由於潛在的後果:
克服限制
克服限制雖然不可能有真正的參考字段,但還有替代方案:
選項 1 :建立一個包裝類別public class Wrapper { public int Value { get; set; } } ... Wrapper wrapper = new Wrapper { Value = 123 };
您可以建立一個包裝類別將引用值儲存為屬性。該類別可以提供獲取和設定值的方法,從而有效地保留引用。
選項 2:使用 Lambda 表達式public delegate int Getter(); public delegate void Setter(int value); ... Getter getter = () => y; Setter setter = z => { y = z; };
您可以使用 lambda 表達式為引用的變數定義 getter 和 setter。這透過委託分配對變數的引用。
結論透過了解ref 欄位限制背後的原因並使用包裝類別等替代技術或lambda 表達式,可以在C# 中的類別字段賦值中實作類似引用的行為。以上是C#中給類別欄位賦值時如何維護引用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!