簡體   English   中英

為什么添加<langversion>默認</langversion>到.csproj 文件修復C# 語言版本錯誤?

[英]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: 鏈接狀態默認為 4.7.2。成為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM