C# 6.0 特性能否在 .NET 4.0 專案中使用?
最近的一個實驗中,我們建立了一個使用 C# 6.0 特性(例如空傳播和屬性初始化)並目標為 .NET 4.0 的範例專案。令人驚訝的是,該專案運行沒有任何障礙。
背景與矛盾
這個觀察結果與傳統觀點相矛盾,傳統觀點認為 .NET 4.6 是使用 C# 6.0 的最低要求。此外,文件指出 .NET 4.0 使用 CLR 4,這讓人對與 C# 6.0 的兼容性產生疑問。
解釋
C# 6.0 依賴 Roslyn 編譯器,該編譯器允許針對早期框架版本進行編譯。但是,這僅限於不需要框架支援的特性。
例如,字串插值與舊版的 .NET 相容,因為它會轉換為 string.Format 呼叫。但是,使用 IFormattable 需要 .NET 4.6,因為必要的 System.FormattableString 類別僅在該版本中可用。
所涉特性的適用性
實驗中使用的空傳播和屬性初始化不需要框架支援。因此,即使微軟沒有官方支持,編譯器也能夠在 .NET 4.0 專案中實現它們。
局限性
要注意的是,這種相容性僅限於不需要框架支援的特性。當使用需要框架支援的 C# 6.0 特性時,就需要升級到至少 .NET 4.6。
以上是C# 6.0 功能可以在 .NET 4.0 專案中使用嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!