提问者:小点点

Visual Studio中对C#9.0的支持


如何在C#9.0中打开对records关键字的支持?

我使用的是Visual Studio 16.8,项目文件中的语言设置为9.0

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <LangVersion>9.0</LangVersion>
    <TargetFramework>net5.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <NoWarn>$(NoWarn);1591</NoWarn>
    <Nullable>enable</Nullable>
  </PropertyGroup>


  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.9">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
  </ItemGroup>

</Project>

当我尝试使用新的record关键字(或init)时,在Visual Studio中出现意外的令牌错误。

我错过了什么?或者Visual Studio 16.8不支持C#9.0?

public record Person
{
    public string? FirstName { get; init; }
    public string? LastName { get; init; }
}

2.1.2 [C:\Program Files\dotnet\sdk]
2.1.104 [C:\Program Files\dotnet\sdk]
2.1.201 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.301 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.508 [C:\Program Files\dotnet\sdk]
2.1.700 [C:\Program Files\dotnet\sdk]
2.1.801 [C:\Program Files\dotnet\sdk]
2.2.300 [C:\Program Files\dotnet\sdk]
3.0.100 [C:\Program Files\dotnet\sdk]
3.1.201 [C:\Program Files\dotnet\sdk]
5.0.100 [C:\Program Files\dotnet\sdk]

共2个答案

匿名用户

确保以。NET 5框架为目标。

NET5支持C#9.0。有关更多信息,请参见C#语言版本控制。

https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9

匿名用户

您的语法不正确,这就是您定义类的方式。要创建该记录,您可以用Public record Person(String?FirstName,String?LastName);替换所有这些