由于T是一个TClass,而TClass是一个类,为什么T不是一个类呢?
public class MyClass<TClass> where TClass : class
{
public void FuncA<Ta>() where Ta : class
{
}
public void FuncB<Tb>() where Tb : TClass
{
}
public void Func<T>()
where T : TClass
{
FuncA<T>();
FuncB<T>();
}
}
编辑:
这实际上是有效的。Eric Lippert 让我思考,非常感谢。
由于 T 是 TClass,而 TClass 是 TAnotherType,因此 T 实际上是 TAnotherType。
public class MyClass<TClass, TAnotherType> where TClass : TAnotherType
{
public void FuncA<Ta>() where Ta : TClass
{
}
public void FuncB<Tb>() where Tb : TAnotherType
{
}
public void Func<T>()
where T : TClass
{
FuncA<T>();
FuncB<T>();
}
}
TClass : class
,我们就是在说TClass
必须是引用类型。如果我们接着说T : TClass
,我们就是在说类型T
必须派生/实现(或与传递给TClass
的类型相同)。由于TClass
受限于引用类型,为什么它不能将T
推断为引用类型呢?你能举个例子说明这种情况不成立吗?还是我完全理解错了? - Rob