如何在现有项目中启用 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
我不确定如何在现有解决方案中使用新的 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