C# 8.0 not null 泛型类型约束

C# 8.0 notnull Generic Type Contraint

我正在尝试使用 VS2019 预览版 16.4.0 中刚刚发布的 .NET Standard 2.1 C# 8.0 功能,但一直收到消息 "Cannot resolve symbol 'notnull'"。

我的示例代码:

class Example<T> where T : notnull {}

我在我的项目文件中设置了 <Nullable>enable</Nullable><LangVersion>8</LangVersion> 属性,所有这些新功能都运行良好,看起来就是这样。

如何使用 notnull 类型约束?

这是因为未启用 C# 8.0。

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

但至少在 .NET Core 3.0 GA(正式发布版本)中,如果您的项目面向 netcoreapp3.0,则默认启用 C# 8.0。但是netstandard2.1目标,默认语言版本还是7.3.

如果您确实需要与支持 .NET Standard 2.1 的最新 Xamarin 应用程序共享此库,请在 PropertyGroup 内的 .csproj 文件中明确指定 <LangVersion>8.0</LangVersion>,或者您只需将 TargetFramework 设置为 netcoreapp3.0,默认情况下应启用 C# 8.0。