Welche Arten der Typumwandlung gibt es in C#?
sobes.tech KI
Antwort von AI
In C# gibt es zwei Hauptarten der Typumwandlung:
-
Explizite Umwandlung (Explicit conversion): Erfordert die Verwendung des Operators
(Typ). Wird verwendet, wenn der Compiler die Umwandlung nicht automatisch sicher durchführen kann, z.B. bei der Umwandlung von einer Basisklasse zu einer abgeleiteten Klasse oder von einem genaueren zu einem weniger genauen Typ (z.B.doublezuint). Dies kann zu Datenverlust oder Laufzeitfehlern (InvalidCastException) führen.// Explizite Umwandlung von double zu int double d = 123.45; int i = (int)d; // i wird 123 sein // Explizite Umwandlung eines Objekts in einen bestimmten Typ object obj = "Hello"; string s = (string)obj; // s wird "Hello" sein -
Implizite Umwandlung (Implicit conversion): Wird automatisch vom Compiler durchgeführt, wenn die Umwandlung bekannt und sicher ist, also ohne Datenverlust. Zum Beispiel die Umwandlung von
intzudouble.// Implizite Umwandlung von int zu double int x = 10; double y = x; // y wird 10.0 sein // Implizite Umwandlung einer abgeleiteten Klasse in eine Basisklasse class Base {} class Derived : Base {} Derived derivedObj = new Derived(); Base baseObj = derivedObj; // Implizite Umwandlung
Außerdem gibt es die Operatoren as und is, die ebenfalls zur Typumwandlung gehören, aber mit besonderen Eigenschaften:
-
Operator
as: Führt die Typumwandlung durch, wenn möglich, und gibtnullzurück, wenn die Umwandlung nicht möglich ist. Wirft keine InvalidCastException. Wird nur für Referenztypen und Nullable-Typen verwendet.// Verwendung des Operators as object obj2 = "World"; string s2 = obj2 as string; // s2 wird "World" sein object obj3 = 123; string s3 = obj3 as string; // s3 wird null sein -
Operator
is: Prüft, ob ein Objekt eine Instanz eines bestimmten Typs oder eines Typs, der davon abgeleitet ist, ist. Gibttrueoderfalsezurück. In den neuesten C#-Versionen kann es mit Mustern (Pattern Matching) verwendet werden, um gleichzeitig zu prüfen und zu konvertieren.// Verwendung des Operators is zur Typprüfung object obj4 = "Example"; if (obj4 is string) { // Aktionen, wenn das Objekt eine Zeichenkette ist } // Verwendung von is mit Muster (Pattern matching) if (obj4 is string str) { // str ist hier als String verfügbar }