I'já vi muitas pessoas usarem o seguinte código:
Type t = typeof(obj1);
if (t == typeof(int))
// Some code here
Mas eu sei que também podias fazer isto:
if (obj1.GetType() == typeof(int))
// Some code here
Ou isto:
if (obj1 is int)
// Some code here
Pessoalmente, sinto que o último é o mais limpo, mas falta alguma coisa I'm? Qual deles é o melhor para usar, ou é a preferência pessoal?
Utilize tipo de
quando quiser obter o tipo em tempo de compilação. Utilize GetType
quando quiser obter o tipo em tempo de execução. Raramente há casos para utilizar o is
como um elenco e, na maioria dos casos, você acaba fundindo a variável de qualquer forma.
Há uma quarta opção que você ainda não considerou (especialmente se você vai lançar um objeto para o tipo que você encontrar também); isto é, utilizar o as
.
Foo foo = obj as Foo;
if (foo != null)
// your code here
Isto só usa um elenco enquanto que esta abordagem:
if (obj is Foo)
Foo foo = (Foo)obj;
requer **dois***.
Depende do que eu estiver a fazer. Se eu precisar de um valor de bool (digamos, para determinar se eu vou lançar para um int), eu vou usar o is
. Se eu realmente precisar do tipo por alguma razão (digamos, para passar para algum outro método), usarei GetType()
.