尝试使用as时使用泛型时出现编译器错误。既然我不能按照我想要的方式去做,那么更好的方法是什么?我想检查5-6种类型,计算我可以使用一种方法,看看它是否为空。
T CheckIsType<T>(Thing thing)
{
return thing as T;
}
确切的错误文字:
Error 1 The type parameter 'T' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint.
答案 0 :(得分:9)
只需添加它不抱怨的约束:
T CheckIsType<T>(Thing thing)
where T: class
{
return thing as T;
}
答案 1 :(得分:3)
as
不能使用T可以使用的值类型(例如int
)。
在这种情况下,您只需要一个泛型类型参数:
T CheckIsType<T>(Thing thing) where T: class
{
return thing as T;
}
答案 2 :(得分:1)
我认为您想要使用is
。
var isAThing = thing is Thing;