2011-04-15 39 views
7

可能重复:
Can’t operator == be applied to generic types in C#?应用 '==' 操作符到通用参数

我有一个DatabaseLookup {}类其中参数T将通过在所述查找方法中使用的类。在查找之前,我想看看T是否已经用类似

if (T == previousLookupObject) ... 

查看这根本不编译。是什么阻止我做这样简单的比较?

+3

是'T'指的是通用型或通用的实际变量。 'T'通常用作泛型类型的名称。不是一个对象,而是一个类型。尝试定义一个类型为“T”的变量。 – 2011-04-15 21:21:53

+2

然后使用'thisObject.Equals(previousLookupObject)'而不是'==' – 2011-04-15 21:26:05

回答

16

T是类型参数。如果您的previousLookupObjectType的对象,则需要执行typeof(T) == previousLookupObject

如果previousLookupObjectT类型的变量,则需要将实际对象与T进行比较。

如果您想知道previousLookupObject是否为T,您需要使用is运营商:if (previousLookupObject is T)

8

T是类型,previousLookupObject是(我想)是一个对象实例。所以你正在比较苹果和橘子。试试这个:

if (previousLookupObject is T) 
{ 
    ...  
} 
0

什么类型是previousLookupObject?泛型类型参数是类型,不能用作普通的对象引用。