Avatar ·

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 –