Übersicht über Konvertierung
Aktualisiert: November 2007
Jeder Wert verfügt über einen zugeordneten Typ, durch den Attribute wie der dem Wert zugewiesene Speicherplatz, der zulässige Wertebereich und die verfügbar gemachten Member festgelegt werden. Viele Werte können durch mehrere Typen ausgedrückt werden. Beispielsweise kann der Wert 4 als ganze Zahl oder als Gleitkommawert dargestellt werden. Durch Konvertierung wird ein Wert neuen Typs erstellt, der mit dem Wert des alten Typs äquivalent ist. Die Identität (oder der exakte Wert) beider Objekte bleibt dabei nicht immer erhalten. Zusätzlich zur impliziten Konvertierung unterstützt .NET Framework die explizite Konvertierung über die System.Convert-Klasse, die Methoden zur Typkonvertierung bietet.
Hinweis: |
---|
Einzelne Sprachen können ebenfalls Möglichkeiten zur expliziten Konvertierung bieten. C# verwendet beispielsweise Typumwandlungsoperatoren und Visual Basic im Compiler implementierte Konvertierungsfunktionen wie CType, CInt und DirectCast. |
Die Common Language Runtime unterstützt sowohl die Erweiterungs- als auch die Eingrenzungskonvertierung. Beispielsweise kann ein Wert, der als 32-Bit-Ganzzahl mit Vorzeichen dargestellt wird, in eine 64-Bit-Ganzzahl mit Vorzeichen umgewandelt werden. Dies ist ein Beispiel für eine Erweiterungskonvertierung. Dagegen ist die umgekehrte Konvertierung (von 64 Bit in 32 Bit) ein Beispiel für eine Eingrenzungskonvertierung. Eine Erweiterungskonvertierung kann niemals zu einem Verlust von Informationen (möglicherweise aber von Genauigkeit) führen, eine Eingrenzungskonvertierung kann jedoch sehr wohl zu Informationsverlust führen. Eine Liste der Erweiterungskonvertierungen finden Sie unter Typkonvertierungstabellen.
Im folgenden Codebeispiel wird eine Erweiterungskonvertierung durchgeführt, wobei der Int32-Wert MyInt in einen Int64-Wert konvertiert wird. Diese Konvertierung wird implizit vorgenommen; die Convert-Klasse bzw. eine andere Konvertierungsmethode oder ein anderer Konvertierungsoperator werden dabei nicht verwendet.
Dim MyInt As Integer = 1234567891
Dim MyBigInt As Long = MyInt
Console.WriteLine(MyBigInt) ' Displays 1234567891
int MyInt = 1234567891;
long MyBigInt = MyInt;
Console.WriteLine(MyBigInt); // Displays 1234567891
Im folgenden Codebeispiel wird eine Eingrenzungskonvertierung durchgeführt, wobei der Int64-Wert MyBigInt in einen Int32-Wert konvertiert wird. Eine solche Eingrenzungskonvertierung muss in C# immer explizit ausgeführt werden, und in Visual Basic muss sie explizit ausgeführt werden, wenn Option Strict aktiviert ist. In diesem Beispiel wird die ToInt32-Methode aufgerufen, um die Konvertierung auszuführen.
Dim MyBigInt As Long = 1234567891
' exception handler: narrowing conversions can overflow
Try
Dim MyInt As Integer = Convert.ToInt32(MyBigInt)
Console.WriteLine(MyInt) ' Displays 1234567891
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to an integer.", _
MyBigInt)
End Try
long MyBigInt = 1234567891;
// exception handler: narrowing conversions can overflow
try
{
int MyInt = Convert.ToInt32(MyBigInt);
Console.WriteLine(MyBigInt); // Displays 1234567891
}
catch (OverflowException)
{
Console.WriteLine("Unable to convert {0} to an integer.",
MyBigInt);
}
Siehe auch
Konzepte
Konvertieren von Datentypen mithilfe von 'System.Convert'