Konvertieren von Datentypen mithilfe von 'System.Convert'
Aktualisiert: November 2007
Die System.Convert-Klasse enthält einen vollständigen Satz von Methoden zur Durchführung unterstützter Konvertierungen. Konvertierungen können mit diesen Methoden sprachunabhängig durchgeführt werden und sind für alle Sprachen verfügbar, die die Common Language Runtime als Ziel haben. Zwar gibt es für verschiedene Sprachen auch unterschiedliche Konvertierungstechniken, doch wird durch die Convert-Klasse sichergestellt, dass alle gebräuchlichen Konvertierungen in einem generischen Format verfügbar sind. Mit dieser Klasse können Erweiterungskonvertierungen, Eingrenzungskonvertierungen und Konvertierungen in nicht verwandte Datentypen vorgenommen werden. Es werden zum Beispiel Konvertierungen von String-Typen in numerische Typen, DateTime-Typen in String-Typen und String-Typen in Boolean-Typen unterstützt. Die verfügbaren Konvertierungen sind in der Liste der Methoden in der Convert-Klasse aufgelistet. Die Convert-Klasse führt geprüfte Konvertierungen durch und löst im Fall einer nicht unterstützten Konvertierung eine Ausnahme aus. Bei der Ausnahme handelt es sich häufig um eine OverflowException. Eine Liste unterstützter Konvertierungen finden Sie unter Typkonvertierungstabellen.
Sie können den zu konvertierenden Wert einer geeigneten Methode in der Convert-Klasse übergeben und den zurückgegebenen Wert mit einer neuen Variablen initialisieren. Im folgenden Beispielcode wird unter Verwendung der Convert-Klasse ein String-Wert in einen Boolean-Wert umgewandelt.
Dim myString As String = "true"
Try
Dim myBool As Boolean = Convert.ToBoolean(myString)
Console.WriteLine(myBool)
Catch e As FormatException
Console.WriteLine("{0} is not a Boolean value.", myString)
End Try
' myBool has a value of True.
string myString = "true";
try
{
bool myBool = Convert.ToBoolean(myString);
Console.WriteLine(myBool);
}
catch (FormatException)
{
Console.WriteLine("{0} is not a Boolean value.", myString);
}
// myBool has a value of True.
Die Verwendung der Convert-Klasse ist auch bei der Konvertierung eines String-Werts in einen numerischen Wert sinnvoll. Durch den folgenden Beispielcode wird eine Zeichenfolge, die Ziffern enthält, in einen Int32-Wert umgewandelt.
Dim newString As String = "123456789"
Try
Dim myInt As Integer = Convert.ToInt32(newString)
Console.WriteLine(myInt)
Catch e As FormatException
Console.WriteLine("{0} does not represent a number.", newString)
Catch e As OverflowException
Console.WriteLine("{0} is out of range of the integer type.", _
newString)
End Try
' myInt has a value of 123456789.
string newString = "123456789";
try
{
int myInt = Convert.ToInt32(newString);
Console.WriteLine(myInt);
}
catch (FormatException)
{
Console.WriteLine("{0} does not represent a number.",
newString);
}
catch (OverflowException)
{
Console.WriteLine("{0} is out of range of the integer type.",
newString);
}
// myInt has a value of 123456789.
Sie können die Convert-Klasse auch bei Eingrenzungskonvertierungen einsetzen, die in der von Ihnen verwendeten Sprache nicht implizit durchgeführt werden können. Im folgenden Codebeispiel wird eine Eingrenzungskonvertierung eines Int64-Werts in einen kleineren Int32-Wert mithilfe der Convert.ToInt32-Methode gezeigt.
Dim myInt64 As Int64 = 123456789
Try
Dim myInt As Integer = Convert.ToInt32(myInt64)
Console.WriteLine(myInt)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to an integer.", _
myInt64)
End Try
' MyInt has a value of 123456789.
Int64 myInt64 = 123456789;
try
{
int myInt = Convert.ToInt32(myInt64);
Console.WriteLine(myInt);
}
catch (OverflowException)
{
Console.WriteLine("Unable to convert {0} to a 32-bit integer.",
myInt64);
}
// myInt has a value of 123456789.
Unter Umständen kann eine Eingrenzungskonvertierung mit der Convert-Klasse den Wert des konvertierten Elements verändern. Im folgenden Codebeispiel wird ein Double-Wert in einen Int32-Wert konvertiert. Dabei wird der Wert 42.72 auf 43 gerundet, um die Konvertierung durchführen zu können.
Dim myDouble As Double = 42.72
Try
Dim myInt As Integer = Convert.ToInt32(myDouble)
Console.WriteLine(myInt)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0} to an integer.", myDouble)
End Try
' MyInt has a value of 43.
Double myDouble = 42.72;
try
{
int myInt = Convert.ToInt32(myDouble);
Console.WriteLine(myInt);
}
catch (OverflowException)
{
Console.WriteLine("Unable to convert {0} to an integer.", myDouble);
}
// myInt has a value of 43.