2011-04-15 67 views
7

可能重複:
Can’t operator == be applied to generic types in C#?應用 '==' 操作符到通用參數

我有一個DatabaseLookup {}類其中參數T將通過在所述查找方法中使用的類。在查找之前,我想看看T是否已經用類似

if (T == previousLookupObject) ... 

查看這根本不編譯。是什麼阻止我做這樣簡單的比較?

+3

是'T'指的是通用型或通用的實際變量。 'T'通常用作泛型類型的名稱。不是一個對象,而是一個類型。嘗試定義一個類型爲「T」的變量。 – 2011-04-15 21:21:53

+2

然後使用'thisObject.Equals(previousLookupObject)'而不是'==' – 2011-04-15 21:26:05

回答

16

T是類型參數。如果您的previousLookupObjectType的對象,則需要執行typeof(T) == previousLookupObject

如果previousLookupObjectT類型的變量,則需要將實際對象與T進行比較。

如果您想知道previousLookupObject是否爲T,您需要使用is運營商:if (previousLookupObject is T)

8

T是類型,previousLookupObject是(我想)是一個對象實例。所以你正在比較蘋果和橘子。試試這個:

if (previousLookupObject is T) 
{ 
    ...  
} 
0

什麼類型是previousLookupObject?泛型類型參數是類型,不能用作普通的對象引用。