c# - 上课做什么? (带问号的类)在 C# 泛型类型约束中是什么意思?

标签 c# generics c#-8.0 nullable-reference-types

当我试图找到另一个问题的答案时,我注意到这段代码是用 C# 编译的:

public void Foo<T>(T obj)
    where T : class?
{
}

我什至没能在文档中找到它的含义。

附言显然有人已经决定关闭一个问题,甚至没有弄清楚“重复”并没有真正联系起来。首先尝试弄清楚事情而不是结束问题真的很难吗?副本是关于可为空的原始类型,而可为空的引用类型则完全不同。除了有人看到他们都有问号并将问题标记为重复。

最佳答案

它强制 T 必须是可为空的引用类型。

您为 T 设置的类型必须派生自 object?

这是 C#8 中的一项新功能,可将类型显式声明为可为空。 如果你有

 Add<T>(T tmp);

你的文档,添加null就可以了;

关于c# - 上课做什么? (带问号的类)在 C# 泛型类型约束中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59630532/

相关文章:

c# - 验证构造函数参数的正确方法是什么

c# - 从另一个窗体刷新Form1 dataGrid c# winform

c# - 如何抑制 StyleCop 错误 SA0102 : CSharp. CsParser:使用泛型类型参数属性时在文件中发现语法错误

c# - POP-Before-SMTP

c# - 在 SSL 下显示来自同一域的 IFrame

r - 用于在 R 中编写(通用)函数的参数和类

java - 改造、实时数据适配器、使响应类包装器通用?

c# - 如何停止传播异步流 (IAsyncEnumerable)

c# - 自动属性的默认接口(interface)方法和默认值

C# 9 可空类型问题