【问题标题】:Applying '==' operator to generic parameter [duplicate]将“==”运算符应用于泛型参数
【发布时间】:2011-08-06 15:36:45
【问题描述】:

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

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

if (T == previousLookupObject) ...

这根本不编译。是什么让我无法进行这样的简单比较?

【问题讨论】:

  • T是指泛型类型还是泛型的实际变量。 T 通常用作泛型类型的名称。不是对象而是类型。尝试定义T 类型的变量。
  • 然后用thisObject.Equals(previousLookupObject)代替==

标签: c# .net generics


【解决方案1】:
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    T 是类型,previousLookupObject 是(我想)一个对象实例。因此,您将苹果与橙子进行比较。试试这个:

    if (previousLookupObject is T)
    {
        ...    
    }
    

    【讨论】:

      【解决方案4】:

      T 是类型参数。如果你的previousLookupObjectType的对象,你需要做typeof(T) == previousLookupObject

      如果previousLookupObjectT 类型的变量,您需要有一个T 的实际对象来比较它。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        • 2015-02-04
        • 2016-06-10
        • 2014-10-07
        • 2011-08-19
        相关资源
        最近更新 更多