C# 的類型推斷透過讓編譯器從初始化推斷類型來簡化變數宣告。 然而,這個有用的功能對於建構函數來說並不存在,引發了關於它的遺漏的問題。
缺乏建構函式類型推論本質上並不是一個基本的設計缺陷。 它可以透過分析可用的建構子、解決重載和選擇「最佳」匹配來實現。 挑戰在於比較不同型別和不同泛型參數的建構函數的複雜度。
主要障礙是潛在收益和實施成本之間的權衡。 雖然方便,但添加此功能需要大量的開發工作。 此外,它還存在在重載解析中引入歧義和錯誤的風險。
儘管存在此限制,開發人員可以使用工廠模式實現類似的結果。 專用工廠類別處理物件創建,根據需要指定類型。 例如:
<code class="language-csharp">public class MyTypeFactory { public static MyType<T> Create<T>(T value) { return new MyType<T>(value); } }</code>
這允許在物件建立期間進行類型推斷:
<code class="language-csharp">var myObj = MyTypeFactory.Create(42);</code>
建構函式類型推論是一個反覆出現的建議,但由於其他功能的優先級,其實作仍然懸而未決。 曾短暫考慮用於 C# 6,但最終在開發過程中被排除。
雖然方便,但 C# 中缺乏建構函式類型推論源自於實際問題和工廠模式等解決方法的可用性。 開發人員目前必須使用顯式類型宣告或替代策略來進行物件初始化。
以上是為什麼 C# 沒有建構函數型別推斷?的詳細內容。更多資訊請關注PHP中文網其他相關文章!