如题,以下代码在vs2019中编译无法通过
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public static class PersonValidator
{
public static bool IsValid(Person person) =>
person switch
{
{ Age: < 0 } => false, // Age不能为负数
{ Age: > 120 } => false, // Age不能超过120岁
{ Name: null } => false, // Name不能为空
_ => true
};
}
class Program
{
static void Main()
{
var person = new Person { Name = "Alice", Age = 130 };
Console.WriteLine(PersonValidator.IsValid(person)); // 输出: True
}
}
如图

上面代码是不j是c#8.0最新的表达方式,vs2019 16.3 才开始支持(支持.net core3.1和C#8.0),而我的vs2019是16.0(仅支持.net 2.1)导致,我尝试修改.csproj文件netcoreapp3.1,则编译时报错当前 .NET SDK 不支持将 .NET Core 3.1 设置为目标。请将 .NET Core 2.1 或更低版本设置为目标,或使用支持 .NET Core 3.1 的 .NET SDK 版本。这是必须要升级vs2019吗?