【发布时间】:2010-12-18 10:19:41
【问题描述】:
为什么我必须显式提供泛型参数类型而编译器应该推断类型?
public static T2 Cast<T1,T2>(this T1 arg) where T2 : class where T1 : class
{
return arg as T2;
}
示例用法:
objOfTypeT2 = objOfTypeT1.Cast<TypeT1,TypeT2>();
与我想要使用更智能的编译器相比:
objOfTypeT2 = objOfTypeT1.Cast<TypeT2>();
或者我应该更聪明:-)
请注意,我提供了返回类型。我不想提供我在上面调用函数的对象,方法是Extension Method。
【问题讨论】:
-
正常投射有什么问题?
-
为什么不直接创建一个公共静态 T Cast
(this object value) { return value as T;}? -
@Rauhotz 我有你提到的,只是好奇和寻找另一个重载使我能够将它与值类型一起使用,因为我无法使用泛型约束进行重载。
标签: c# .net generics type-inference