C# 建構子型別推論:為什麼缺少?
C# 的泛型方法很容易支援型別推斷,但建構子顯然不具備此功能。 本文探討了這項遺漏背後的原因。
基本原則
建構函式類型推論的缺乏並不是源自於基本的語言限制。 從演算法上來說,根據提供的參數來確定正確的構造函數類型是可行的。
實際挑戰
儘管理論上可行,但實際障礙阻礙了實施。 一個主要問題是重載解析的複雜度增加。 由於多個建構函數共享相同的名稱但通用參數不同,編譯器選擇最佳匹配的任務變得更加複雜,並且可能會更慢。
另一個因素是人們認為缺乏實質好處。雖然在特定情況下提高程式碼可讀性是一個潛在的優勢,但它並沒有超過該語言的整體可用性或效能影響。 替代解決方案(例如工廠模式)可以有效地滿足類型推斷的需求,而無需直接語言支援。
總結
總而言之,目前實現構造函數類型推論的實際缺點超過了感知到的好處。儘管考慮了先前的 C# 版本(包括最終被放棄的 C# 6 提案),但它尚未實現足夠的優先順序。 然而,未來的語言迭代可能會重新審視此功能。
以上是為什麼 C# 不支援構造函數中的型別推斷?的詳細內容。更多資訊請關注PHP中文網其他相關文章!