![](/img/trans.png)
[英]C# compiler throws Language Version (LangVersion) reference error "Invalid 'nullable' value: 'Enable' for C# 7.3"
[英]Why does adding <LangVersion>default</LangVersion> to a .csproj file fix a C# language version error?
我在我的 C# 代碼中使用了“或模式”,但出現以下錯誤:
CS8370 功能“或模式”在 C# 7.3 中不可用。 請使用 9.0 或更高版本的語言。
我的目標是 .NET Framework 4.7.2,而 my.csproj 文件沒有<LangVersion>
元素。 但是,當我將以下元素添加到 my.csproj 文件時,錯誤消失並且我的代碼編譯正確:
<LangVersion>default</LangVersion>
我期望<LangVersion>
元素的默認值只使用標准框架 c# 語言,我希望它是 c# 7.3。 那么為什么添加這個元素可以修復錯誤並允許我使用“或模式”呢? 我是否不由自主地使用了較新的 c# 語言版本並且不得不期待不必要的問題?
我正在使用 Visual Studio 17.4.1。
下面是使用該模式的示例代碼:
static void Main()
{
var e = MyEnum.A;
var result = e is MyEnum.A or MyEnum.B; //shows CS8370 if used without <LangVersion>default</LangVersion>
}
public enum MyEnum
{
A,
B,
C
}
Microsoft聲明 .net Framework 項目的默認值為 C# 7.3:
如果您不使用<LangVersion>default</LangVersion>
,Visual Studio 編譯器將使用您在圖片中顯示的默認框架 C# 語言版本。
但是,如果您使用<LangVersion>default</LangVersion>
,它會使用與您的 Visual Studio 安裝捆綁在一起的最新發布的編譯器主要版本。
你可以看到,如果你在Microsoft頁面中向下滾動更多,它指定了“default”關鍵字的含義。
補充說明:
如果您使用默認和 VS2017,“或模式”可能仍然不受支持,因為 VS2017 附帶的編譯器版本不夠高
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.