Altro
Controllo del tipo: typeof, GetType, o is?
Ho visto molte persone usare il seguente codice:
Type t = typeof(obj1);
if (t == typeof(int))
// Some code here
Ma so che si può anche fare così:
if (obj1.GetType() == typeof(int))
// Some code here
O questo:
if (obj1 is int)
// Some code here
Personalmente, sento che l'ultimo è il più pulito, ma c'è qualcosa che mi sfugge? Qual è il migliore da usare, o è una preferenza personale?
1426
3
Usate
typeof
quando volete ottenere il tipo al tempo di compilazione. UsateGetType
quando volete ottenere il tipo al tempo di esecuzione. Raramente ci sono casi in cui si deve usareis
, perché fa un cast e, nella maggior parte dei casi, si finisce comunque per fare il casting della variabile.C'è una quarta opzione che non hai considerato (specialmente se hai intenzione di lanciare anche un oggetto al tipo che trovi): usare
as
.Questo usa solo un cast mentre questo approccio:
richiede due.
Credo che l'ultimo guardi anche l'ereditarietà (ad esempio Dog is Animal == true), che è meglio nella maggior parte dei casi.
Dipende da quello che sto facendo. Se ho bisogno di un valore bool (ad esempio, per determinare se farò il cast di un int), userò
is
. Se ho effettivamente bisogno del tipo per qualche motivo (ad esempio, per passare a qualche altro metodo) useròGetType()
.