即使互斥约束,通用C#方法还是模棱两可的?

时间:2019-02-13 17:40:43

标签: c# generics constraints ambiguous

为什么这两种方法不明确?

public static T Work<T>(this MyClass thing) where T : class { ... }
public static T? Work<T>(this MyClass thing) where T : struct { ... }

约束classstruct是互斥的,不是吗?因此,对于任何类型T,对该方法的任何调用都应该是明确的,对吗?因为T不能既是引用类型又是值类型...?

这仅仅是对C#编译器/语言def的疏忽吗?

我要做的是创建一个通用方法,该方法在某些情况下将返回null,这意味着“不存在任何值”,并使该方法能够处理引用和值类型。对于值类型T,我希望返回类型为Nullable<T>,或更短的T?

0 个答案:

没有答案