将“==”运算符应用于通用参数

21 浏览
0 Comments

将“==”运算符应用于通用参数

这个问题已经有答案了:

可能是重复的问题:

Can’t operator == be applied to generic types in C#?

我有一个DatabaseLookup{}类,其中参数T将被类中的查找方法使用。在查找之前,我想查看是否已经使用类似以下内容的T进行了查找:

if (T == previousLookupObject) ...

这完全无法编译。是什么阻止了我简单进行这种比较?

admin 更改状态以发布 2023年5月23日
0
0 Comments

T 表示类型,previousLookupObject 是一个对象实例。因此,你正在将苹果和橙子进行比较。尝试这样做:

if (previousLookupObject is T)
{
    ...    
}

0
0 Comments

T是类型参数。如果你的previousLookupObject是一个Type对象,你需要执行typeof(T) == previousLookupObject

如果previousLookupObject是类型T的变量,你需要有一个实际的T对象来进行比较。

如果你想要找出previousLookupObject是否为类型T,你需要使用is运算符:if (previousLookupObject is T)

0