将'=='运算符应用于泛型参数

时间:2011-04-15 21:19:42

标签: c# .net generics

  

可能重复:
  Can’t operator == be applied to generic types in C#?

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

之类的东西查找过了
if (T == previousLookupObject) ...

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

4 个答案:

答案 0 :(得分:16)

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

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

如果您想知道previousLookupObject是否属于T类型,则需要使用is运算符:if (previousLookupObject is T)

答案 1 :(得分:8)

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

if (previousLookupObject is T)
{
    ...    
}

答案 2 :(得分:1)

答案 3 :(得分:0)

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