如何在现有项目中启用 C# 7 功能

How to enable C# 7 features in existing projects

我不确定如何在现有解决方案中使用新的 C# 7 功能。我尝试在 switch 语句中使用模式匹配,但我不断收到 Value of integral type expected 错误。

有什么技巧可以开启吗?如果我在 VS 2017 中打开解决方案,我虽然可以使用新功能。

我的项目以 .net 4.6.2 为目标。

这里是示例代码

    private void CS7Test(object o)
    {
        switch (o)
        {
            case null:
                Console.WriteLine("it's a constant pattern");
                break;
            case int i:
                Console.WriteLine("it's an int");
                break;
            case UserInfo p when p.Username.StartsWith("Ka"):
                Console.WriteLine($"a Ka person {p.Username}");
                break;
            case UserInfo p:
                Console.WriteLine($"any other person {p.Username}");
                break;
            case var x:
                Console.WriteLine($"it's a var pattern with the type {x?.GetType().Name} ");
                break;
            default:
                break;
        }
    }

实际上它在没有做任何特殊配置的情况下工作。 Resharper 给出了这些错误,在禁用 resharper 后它就像一个魅力。

Vs 2017 默认配置为支持 c#7.0 并启用 Resharper。 您无需禁用它。

在 vs 2017 更新 3 中,您可以将其配置为使用 c# 7.1 的新功能(并且还启用了 resharper)。

更多详情回顾:setting c#7.1 in vs2017.3