可能重複:
Can’t operator == be applied to generic types in C#?應用 '==' 操作符到通用參數
我有一個DatabaseLookup {}類其中參數T將通過在所述查找方法中使用的類。在查找之前,我想看看T是否已經用類似
if (T == previousLookupObject) ...
查看這根本不編譯。是什麼阻止我做這樣簡單的比較?
可能重複:
Can’t operator == be applied to generic types in C#?應用 '==' 操作符到通用參數
我有一個DatabaseLookup {}類其中參數T將通過在所述查找方法中使用的類。在查找之前,我想看看T是否已經用類似
if (T == previousLookupObject) ...
查看這根本不編譯。是什麼阻止我做這樣簡單的比較?
T
是類型參數。如果您的previousLookupObject
是Type
的對象,則需要執行typeof(T) == previousLookupObject
。
如果previousLookupObject
是T
類型的變量,則需要將實際對象與T
進行比較。
如果您想知道previousLookupObject
是否爲T
,您需要使用is
運營商:if (previousLookupObject is T)
。
T
是類型,previousLookupObject
是(我想)是一個對象實例。所以你正在比較蘋果和橘子。試試這個:
if (previousLookupObject is T)
{
...
}
什麼類型是previousLookupObject
?泛型類型參數是類型,不能用作普通的對象引用。
是'T'指的是通用型或通用的實際變量。 'T'通常用作泛型類型的名稱。不是一個對象,而是一個類型。嘗試定義一個類型爲「T」的變量。 – 2011-04-15 21:21:53
然後使用'thisObject.Equals(previousLookupObject)'而不是'==' – 2011-04-15 21:26:05