在 C# 中,该Nullable<T>
类型不满足where
struct
通用约束(而 AFAK 这在技术上是一个结构)。这可用于指定泛型参数必须是不可为空的值类型:
T DoSomething<T>() where T : struct
{
//...
}
DoSomething<int?>(); //not ok
DoSomething<int>(); //ok
当然,Nullable<T>
也不满足引用类型where
class
约束:
T DoSomething<T>() where T : class
{
//...
}
DoSomething<int?>(); //not ok
DoSomething<Foo>(); //ok
这是否可以定义一个约束,例如它必须是引用类型或值类型,但不是 Nullable 值类型?
像这样的东西:
void DoSomething<T>() where T : class, struct //wont compile!
{
//...
}
DoSomething<int?>(); //not ok
DoSomething<int>(); //ok
DoSomething<Foo>(); //ok