Type Checking en C# : typeof, GetType() ou is ? Quand utiliser quoi ?
Bonjour à tous ! Je suis un développeur C# débutant et je n'arrive pas à comprendre la vérification des types en C#. Il y a trois façons : l'opérateur `typeof`, la méthode `GetType()` et l'opérateur `is`. Mais quand faut-il utiliser chacun ?
Voici un exemple qui me trouble :
```csharp
object obj = "Hello, world!";
// Méthode 1
if (obj.GetType() == typeof(string))
Console.WriteLine("C'est une chaîne (GetType)");
// Méthode 2
if (obj is string)
Console.WriteLine("C'est une chaîne (is)");
// Méthode 3
Type t = typeof(string);
if (obj.GetType() == t)
Console.WriteLine("C'est une chaîne (typeof)");
```
Les trois variantes fonctionnent, mais je sens que ce ne sont pas des choses interchangeables. Par exemple, j'ai entendu dire que `typeof` ne fonctionne qu'avec les types au moment de la compilation, alors que `GetType()` s'exécute à l'exécution. Et `is` est en quelque sorte magique —