2011-04-15 17 views
7

Eventuali duplicati:
Can’t operator == be applied to generic types in C#?Applicando '==' all'operatore di parametro generico

Ho una classe DatabaseLookup {} dove il parametro T sarà utilizzato dai metodi di ricerca del classe. Prima di cercare, voglio vedere se T è già stato rilevato con qualcosa come

if (T == previousLookupObject) ... 

Questo non si compila affatto. Cosa mi impedisce di fare un semplice confronto come questo?

+3

è 'T' riferimento al tipo generico o di una variabile reale del generico. 'T' viene solitamente utilizzato come nome del tipo generico. Non un oggetto ma un tipo. Prova a definire una variabile di tipo 'T'. –

+2

E poi usare 'thisObject.Equals (previousLookupObject)' invece di '==' –

risposta

16

T è il parametro type. Se il tuo previousLookupObject è un oggetto di Type, devi fare typeof(T) == previousLookupObject.

Se previousLookupObject è variabile di tipo T, è necessario disporre di un oggetto reale di T per confrontarlo.

Se si vuole scoprire se previousLookupObject è di tipo T, è necessario utilizzare l'operatore di is: if (previousLookupObject is T).

8

T è di tipo, previousLookupObject è (suppongo) un'istanza di oggetto. Quindi stai confrontando le mele con le arance. Prova questo:

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

Che tipo è previousLookupObject? I parametri di tipo generico sono tipi e non possono essere utilizzati come normali riferimenti a oggetti.

Problemi correlati