可能重复:
Can’t operator == be applied to generic types in C#?应用 '==' 操作符到通用参数
我有一个DatabaseLookup {}类其中参数T将通过在所述查找方法中使用的类。在查找之前,我想看看T是否已经用类似
if (T == previousLookupObject) ...
查看这根本不编译。是什么阻止我做这样简单的比较?
可能重复:
Can’t operator == be applied to generic types in C#?应用 '==' 操作符到通用参数
我有一个DatabaseLookup {}类其中参数T将通过在所述查找方法中使用的类。在查找之前,我想看看T是否已经用类似
if (T == previousLookupObject) ...
查看这根本不编译。是什么阻止我做这样简单的比较?
T
是类型参数。如果您的previousLookupObject
是Type
的对象,则需要执行typeof(T) == previousLookupObject
。
如果previousLookupObject
是T
类型的变量,则需要将实际对象与T
进行比较。
如果您想知道previousLookupObject
是否为T
,您需要使用is
运营商:if (previousLookupObject is T)
。
T
是类型,previousLookupObject
是(我想)是一个对象实例。所以你正在比较苹果和橘子。试试这个:
if (previousLookupObject is T)
{
...
}
什么类型是previousLookupObject
?泛型类型参数是类型,不能用作普通的对象引用。
是'T'指的是通用型或通用的实际变量。 'T'通常用作泛型类型的名称。不是一个对象,而是一个类型。尝试定义一个类型为“T”的变量。 – 2011-04-15 21:21:53
然后使用'thisObject.Equals(previousLookupObject)'而不是'==' – 2011-04-15 21:26:05