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
版本,而不是 latest
或 latestMajor
版本作为默认语言版本。
但至少在 .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。
我正在尝试使用 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
版本,而不是 latest
或 latestMajor
版本作为默认语言版本。
但至少在 .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。