Avatar ·

Type Checking em C#: typeof, GetType() ou is? Quando usar cada um?

Olá a todos! Sou um desenvolvedor C# iniciante e não consigo entender a verificação de tipos em C#. Existem três formas: o operador `typeof`, o método `GetType()` e o operador `is`. Mas quando usar cada um? Aqui está um exemplo que me confunde: ```csharp object obj = "Hello, world!"; // Forma 1 if (obj.GetType() == typeof(string)) Console.WriteLine("Isso é uma string (GetType)"); // Forma 2 if (obj is string) Console.WriteLine("Isso é uma string (is)"); // Forma 3 Type t = typeof(string); if (obj.GetType() == t) Console.WriteLine("Isso é uma string (typeof)"); ``` Todas as três opções funcionam, mas sinto que não são intercambiáveis. Por exemplo, ouvi dizer que `typeof` funciona apenas com tipos em tempo de compilação, enquanto `GetType()` funciona em tempo de execução. E `is` é meio mágico —