在 C# 中宣告成員變數時,主要有兩種初始化方法:在宣告時直接賦值或在預設建構函式中初始化。本文將探討每種方法的優缺點,並討論效能影響。
欄位初始化是指在宣告成員變數時直接為其賦值。例如:
<code class="language-csharp">private List<object> _things = new List<object>(); private int _arb = 99;</code>
另一方面,建構函式初始化是指在預設建構函式中為成員變數賦值。例如:
<code class="language-csharp">private List<object> _things; private int _arb; public TheClass() { _things = new List<object>(); _arb = 99; }</code>
就效能而言,欄位初始化和建構函式初始化之間沒有顯著差異。兩種方法實質上都在建構函數中實作初始化邏輯。唯一的細微差別是,字段初始化器在任何“base”或“this”建構函數呼叫之前發生。
當使用自動實現的屬性時,建構函式方法變得更合適。自動實作的屬性不允許欄位初始化,因此必須在建構函式中初始化它們。例如:
<code class="language-csharp">[DefaultValue("")] public string Foo { get; set; } public Bar() { // 构造函数 Foo = ""; }</code>
除了上述考慮之外,字段初始化和建構函數初始化之間的選擇很大程度上取決於個人偏好和編碼風格。但是,有一些一般性指導原則:
在 C# 中初始化成員變數的最佳實踐取決於程式碼的特定需求。雖然效能沒有差異,但字段初始化使初始化邏輯局部化,而構造函數初始化允許更複雜的場景。透過考慮每種方法的優缺點,開發人員可以選擇最適合其程式碼的方法。
以上是C# 成員變數:欄位初始化與建構函式初始化-哪個最好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!