为什么这两种方法不明确?
public static T Work<T>(this MyClass thing) where T : class { ... }
public static T? Work<T>(this MyClass thing) where T : struct { ... }
约束class
和struct
是互斥的,不是吗?因此,对于任何类型T
,对该方法的任何调用都应该是明确的,对吗?因为T
不能既是引用类型又是值类型...?
这仅仅是对C#编译器/语言def的疏忽吗?
我要做的是创建一个通用方法,该方法在某些情况下将返回null
,这意味着“不存在任何值”,并使该方法能够处理引用和值类型。对于值类型T
,我希望返回类型为Nullable<T>
,或更短的T?
。