Freigeben über


Explizite Konvertierung

Einige Compiler unterstützen bei Eingrenzungskonvertierungen nur die explizite Konvertierung. Dabei handelt es sich um eine sprachspezifische Art des Konvertierens. Einige Sprachen wie C# und C++ verwenden Typumwandlung, um explizite Konvertierungen durchzuführen. Typumwandlung bedeutet, dass einer Konvertierung ein Datentyp vorangestellt wird, durch den die Art der durchzuführenden Konvertierung festlegt wird. In Visual Basic wird die CType-Funktion verwendet, um explizite Konvertierungen von Datentypen zu ermöglichen, die nicht implizit konvertiert werden können. Zwar unterstützen die meisten Sprachen, die die Common Language Runtime als Ziel haben, explizite Konvertierung, doch ist der zugehörige Algorithmus von Sprache zu Sprache verschieden. In einigen dieser Sprachen ist es u. U. erforderlich, eine bestimmte Konvertierung explizit durchzuführen, andere hingegen gestatten die implizite Durchführung derselben Konvertierung. Nähere Informationen zu expliziten Konvertierungen erhalten Sie in der Dokumentation zu der von Ihnen verwendeten Sprache.

Sie können sowohl geprüfte als auch ungeprüfte Konvertierungen durchführen. Bei geprüften Konvertierungen wird eine OverflowException ausgelöst, sobald der Maximalwert des Zieltyps kleiner ist als der Wert des Ausgangstyps. Wird unter denselben Umständen eine ungeprüfte Konvertierung durchgeführt, wird möglicherweise keine Ausnahme ausgelöst. Die genauen Auswirkungen lassen sich jedoch nicht vorhersagen.

In C# und einigen weiteren Sprachen ist es möglich, ungeprüfte Typumwandlungen durchzuführen. In einem solchen Fall kann dies zu einem fehlerhaften Wert führen. Es wird keine OverflowException ausgelöst. Das Ergebnis einer solchen Konvertierung ist nicht vorhersehbar und daher nicht verlässlich. Im folgenden Codebeispiel wird eine ungeprüfte Typumwandlung in C# vorgenommen.

// The integer value is set to 2147483647.
int MyInt = int.MaxValue;
byte MyByte = (byte)Myint;
// The value of MyByte is 255, the maximum value of a Byte.
// No overflow exception is thrown.

Das folgende Codebeispiel veranschaulicht die explizite Konvertierung mithilfe der geprüften CType-Funktion in Visual Basic und die geprüfte Typumwandlung in C#. Der Double-Wert 123456789 wird in einen Integer-Wert konvertiert.

Dim MyDouble As Double = 123456789
Dim MyInt As Integer = CType(MyDouble, Integer)
' The value MyInt has the value 123456789. 
double MyDouble = 123456789;
int MyInt = checked ((int)MyDouble);
// The value MyInt has the value 123456789.

Beachten Sie, dass explizites Konvertieren in verschiedenen Sprachen zu unterschiedlichen Ergebnissen führen kann. Nähere Informationen zu expliziten Konvertierungen erhalten Sie in der Dokumentation zu der von Ihnen verwendeten Sprache. In Visual Basic wird z. B. beim Konvertieren eines Double-Werts in einen Int32-Wert unter Verwendung der CType-Funktion das Ergebnis gerundet. In C# entfallen bei derselben, explizit durchgeführten Konvertierung die Stellen hinter dem Komma. Im folgenden Beispielcode wird explizite Konvertierung verwendet, um einen Double-Wert in einen Integer-Wert zu konvertieren.

Dim MyDouble As Double = 42.72
Dim MyInt As Integer = CType(MyDouble, Integer)
' MyInt has the value of 43.
Double MyDouble = 42.72;
int MyInt = checked ((int)MyDouble);
// MyInt has the value of 42.

Siehe auch

Referenz

System.Convert

Weitere Ressourcen

Konvertieren von Typen