Type Checking in C#: typeof, GetType() oder is? Wann was verwenden?
Hallo zusammen! Ich bin ein C#-Anfänger und komme mit der Typüberprüfung in C# nicht klar. Es gibt drei Möglichkeiten: den `typeof`-Operator, die `GetType()`-Methode und den `is`-Operator. Aber wann soll man was verwenden?
Hier ist ein Beispiel, das mich verwirrt:
```csharp
object obj = "Hello, world!";
// Methode 1
if (obj.GetType() == typeof(string))
Console.WriteLine("Das ist ein String (GetType)");
// Methode 2
if (obj is string)
Console.WriteLine("Das ist ein String (is)");
// Methode 3
Type t = typeof(string);
if (obj.GetType() == t)
Console.WriteLine("Das ist ein String (typeof)");
```
Alle drei Varianten funktionieren, aber ich habe das Gefühl, dass sie nicht austauschbar sind. Zum Beispiel habe ich gehört, dass `typeof` nur mit Typen zur Compile-Zeit funktioniert, während `GetType()` zur Laufzeit arbeitet. Und `is` ist irgendwie magisch –