C#8.0 notnull通用类型约束

Ben*_*min 3 c# c#-8.0

我正在尝试使用VS2019 Preview 16.4.0中刚刚发布的.NET Standard 2.1 C#8.0功能,但始终收到消息``无法解析符号'notnull'''。

我的示例代码:

class Example<T> where T : notnull {}
Run Code Online (Sandbox Code Playgroud)

我在项目文件中设置了<Nullable>enable</Nullable><LangVersion>8</LangVersion>属性,所有这些新功能都很好用,似乎就是这样。

如何使用notnull约束类型?

Als*_*ein 6

这是因为未启用C#8.0。

在.NET核心3.0 SDK的一些预览版,C#8.0是一个preview版本,而不是latestlatestMajor版本将其作为默认语言版本。

但至少在.NET Core 3.0 GA(正式发行版)中,如果您的项目定位,则默认情况下会启用C#8.0 netcoreapp3.0。但对于netstandard2.1目标,默认语言版本仍为7.3。

如果你确实需要共享此库的最新Xamarin应用包含支持.NET 2.1标准,规定<LangVersion>8.0</LangVersion>明确了在.csproj中的文件PropertyGroup,或者你只是设置TargetFrameworknetcoreapp3.0和C#8.0应该默认启用。