使用带有As运算符的Generic Types

时间:2014-06-16 22:59:12

标签: c# generics

尝试使用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.

3 个答案:

答案 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;