Was ist Konvertierungsoperator in C Sharp?
Ein Konvertierungsoperator in C # ist ein Operator, mit dem eine Konvertierung für einen benutzerdefinierten Typ deklariert wird, sodass ein Objekt dieses Typs in oder von einem anderen benutzerdefinierten Typ oder Basistyp konvertiert werden kann. Die zwei verschiedenen Arten von benutzerdefinierten Conversions umfassen implizite und explizite Conversions.
Im Allgemeinen bieten explizite und implizite Konvertierungsoperatoren die Fähigkeit einer Klasse, in die anderen möglichen Datentypen umgewandelt zu werden.
Ein expliziter Konvertierungsoperator muss mit einem Cast aufgerufen werden und wird verwendet, wenn die Conversion für die Benutzer des Operators sichtbar sein muss. Es wird in Darstellungsausdrücken verwendet, in denen die beiden Datentypen nicht vollständig kompatibel sind und daher einen Darstellungsoperator erfordern.
Ein impliziter Konvertierungsoperator ist einfach zu verwenden. Es erfordert keine spezielle Syntax und verbessert die Lesbarkeit des Codes. Es hilft auch einer Klasse, Daten eines Datentyps ohne Typ-Casting in einen kompatiblen Typ zu konvertieren. Implizite Umwandlung muss in Situationen wie Funktionsmemberaufrufen und Zuweisungen verwendet werden, bei denen kein Risiko eines Datenverlusts oder des Auftretens von Ausnahmen besteht.
Eine implizite Konvertierung kann für eine Klasse mit dem Schlüsselwort ‚implizit‘ zusammen mit dem Schlüsselwort ‚operator‘ definiert werden. Eine explizite Konvertierungsoperation kann für eine Klasse unter Verwendung des Schlüsselworts ‚explizit‘ zusammen mit dem Schlüsselwort ‚operator‘ definiert werden. Beide Konvertierungen müssen als statisch definiert werden.
Zum Beispiel kann eine Klasse, RomanNumeral, mit zwei Konvertierungsoperatoren definiert werden. Ein impliziter Konvertierungsoperator kann definiert werden, um die RomanNumeral-Klasse in eine Zeichenfolge umzuwandeln, um eine Zahl in Form einer römischen Ziffer anzuzeigen; Der explizite Konvertierungsoperator kann definiert werden, um die Konvertierung von der RomanNumeral-Klasse in Integer durchzuführen.
Die Konvertierung einer Klasse in Objekttyp oder Schnittstellentyp ist nicht zulässig. Gleiches gilt für die Konvertierung von der Basisklasse in eine von der Basisklasse abgeleitete Klasse.
Für eine bestimmte Klasse können die expliziten und impliziten Operatoren nicht für die Konvertierung vom selben Typ in einen anderen Typ angegeben werden.
Es sollte darauf geachtet werden, dass eine implizite Konvertierung nicht zu einem Datenverlust oder einer Ausnahme führt. Wenn gültige Gründe für das Auslösen einer Ausnahme vorliegen, sollte die Konvertierung vom expliziten Typ sein.