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

Teo*_*gul 7 .net c# generics

可能重复:
不能将运算符==应用于C#中的泛型类型?

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

if (T == previousLookupObject) ...
Run Code Online (Sandbox Code Playgroud)

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

Fem*_*ref 16

T是类型参数.如果你previousLookupObject是一个对象Type,你需要做typeof(T) == previousLookupObject.

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

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


Dar*_*rov 8

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

if (previousLookupObject is T)
{
    ...    
}
Run Code Online (Sandbox Code Playgroud)