2011-04-15 13 views
7

Możliwe zduplikowane:
Can’t operator == be applied to generic types in C#?Zastosowanie "== operatorowi rodzajowego parametru

mam DatabaseLookup {} klasy gdzie parametr T będzie używany metodami odnośników w The klasa. Przed wyszukiwaniem chcę sprawdzić, czy T był już podświetlony z czymś podobnym do:

if (T == previousLookupObject) ... 

To nie kompiluje się w ogóle. Co uniemożliwia mi dokonanie prostego porównania w ten sposób?

+3

jest 'T' odnosząc się do rodzajowego typu lub rzeczywistej zmiennej rodzajową. 'T' jest zwykle używane jako nazwa rodzaju ogólnego. Nie obiekt, ale typ. Spróbuj zdefiniować zmienną typu 'T'. –

+2

A następnie użyj 'thisObject.Equals (previousLookupObject)' zamiast '==' –

Odpowiedz

16

T jest parametrem typu. Jeśli Twój telefon previousLookupObject jest obiektem Type, musisz wykonać typeof(T) == previousLookupObject.

Jeśli previousLookupObject jest zmienną typu T, musisz mieć rzeczywisty obiekt T, aby porównać go z.

Jeśli chcesz dowiedzieć się, czy previousLookupObject jest typu T, trzeba użyć operatora is: if (previousLookupObject is T).

8

T to typ, previousLookupObject to (przypuszczam) instancja obiektu. Więc porównujesz jabłka do pomarańczy. Wypróbuj to:

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

Jaki to jest previousLookupObject? Ogólne parametry typu są typami i nie mogą być używane jako normalne odwołania do obiektów.

Powiązane problemy