我有两种方法:
public TValueType? DoStuffWithValueType<TValueType>(int x, int y)
where TValueType: struct {}
public TRefType DoStuffWithRefType<TRefType>(int x, int y)
where TRefType: class {}
我该如何在新的第三个方法中包装它们?
由于在调用 DoStuffWithValueType
时无法让编译器相信 T
实际上是一个结构体,因此以下内容无法编译:
public T DoStuff<T>(int x, int y) {
if(typeof(T).IsValueType)
{
return DoStuffWithValueType<T>(x, y);
}
return DoStuffWithRefType<T>(x, y);
}
我已经尝试过重载DoStuff
,但是由于泛型约束不是方法签名的一部分,所以这次尝试失败了。
我还试图去掉这些约束,但是无法做到。
有什么想法吗?谢谢!
struct
约束的有效泛型类型参数。可空值类型不能与class
或struct
约束一起使用。 - user743382