首頁 >後端開發 >C++ >C#中給類別欄位賦值時如何維護引用?

C#中給類別欄位賦值時如何維護引用?

Linda Hamilton
Linda Hamilton原創
2025-01-06 01:57:39297瀏覽

How Can I Maintain References When Assigning Values to Class Fields in C#?

在 C# 中保留類別欄位賦值中的引用

嘗試透過引用類別欄位來賦值時,可能會出現意外行為。在提供的範例中,為欄位指派「ref 參數」會導致引用遺失。

理解限制

C# 將欄位宣告限制為對變數。這是由於潛在的後果:

  1. 允許引用欄位可能會導致不安全的情況,即變數超出範圍後無法存取引用變數的儲存。
  2. 維護引用在欄位中,CLR 需要在垃圾回收堆上為局部變數分配內存,這會影響

克服限制

克服限制

雖然不可能有真正的參考字段,但還有替代方案:

選項 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn