【发布时间】:2020-11-08 05:46:09
【问题描述】:
我在.NET Core 控制台应用程序中使用.NET 5。以下代码无法编译:
public class NullableClass<T?>
{
}
错误是:
错误 CS1003 语法错误,应为“,”。
我是否使用任何约束都没有关系。
但是这段代码可以编译:
[return: MaybeNull]
public static T? Find<T>(IEnumerable<T?> sequence, Func<T?, bool> predicate)
{
foreach (var element in sequence) {
if (predicate(element)) return element;
}
return default(T?);
}
当我声明 Find<T?> 时,我遇到了同样的错误。
这里有什么不明白的地方?
【问题讨论】:
-
代码
class NullableClass<T?>是什么意思? -
@Sweeper:我的意思是可以为空的引用类型,它们是在 c#9 中引入的
-
您的意思是,您希望允许可空引用类型放入
<>的NullableClass中? -
@Sweeper:是的,我正在学习可空引用类型的用法,并且我试图理解为什么我不能做像 Find
这样的事情。我想了解为什么不允许这样做:是 C# 中的一些错误还是我确实错过了一些东西并且不明白。顺便说一句,错误信息看起来很奇怪,并没有直接限制它,它只是要求“,”,这很奇怪。 -
吹毛求疵:可空引用类型是在 c# 8 而不是 9 中引入的。
标签: c# generics .net-core nullable-reference-types