我有这段代码:
public T? Foo<T>()
where T : class?
{
return null;
}
出现一个逻辑上可以预期的错误:
可空类型参数必须是值类型或非可空引用类型。考虑添加'class'、'struct'或类型约束。
现在我添加了一个约束条件:
public T? Foo<T>()
where T : class?, IDisposable // Could be any interface I guess
{
return null;
}
有趣的是,错误刚好消失了。不过在我看来,我们似乎存在着冲突的限制条件,因为接口是non-nullable
而class?
不是。
我是否遗漏了什么或编译器存在问题?
IDisposable?
。是的,这很令人困惑。 - canton7