C# 類別欄位中的引用賦值
在C# 中,嘗試透過「引用」對類別欄位進行賦值可能會導致意外行為。考慮以下程式碼:
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();
預期輸出是“X(由Y更新)(由Z更新)”,但只列印“X(由Y更新)”。出現此行為的原因是為欄位指派「ref 參數」會遺失引用。
為什麼欄位不能保存引用?
只有三種可能的選項考慮「ref 類型」欄位:
選擇選項 1 是為了確保程式穩定性並防止在程式碼中建立定時炸彈。
如何實現類似引用的行為
雖然您不能擁有ref 類型的字段,但還有其他方法可以實現類似引用的效果行為:
以上是為什麼 C# 不允許欄位保存引用,有哪些替代方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!