Tabelle für explizite numerische Konvertierungen (C#-Referenz)Explicit numeric conversions table (C# Reference)

Folgende Tabelle veranschaulicht vordefinierte explizite Konvertierungen zwischen numerischen .NET-Typen, für die es keine implizite Konvertierung gibt.The following table shows the predefined explicit conversions between .NET numeric types for which there is no implicit conversion.

VonFrom BeschreibungTo
sbytesbyte byte, ushort, uint, ulong oder charbyte, ushort, uint, ulong, or char
bytebyte sbyte oder charsbyte or char
shortshort sbyte, byte, ushort, uint, ulong oder charsbyte, byte, ushort, uint, ulong, or char
ushortushort sbyte, byte, short oder charsbyte, byte, short, or char
intint sbyte, byte, short, ushort, uint, ulong oder charsbyte, byte, short, ushort, uint, ulong,or char
uintuint sbyte, byte, short, ushort, int oder charsbyte, byte, short, ushort, int, or char
longlong sbyte, byte, short, ushort, int, uint, ulong oder charsbyte, byte, short, ushort, int, uint, ulong, or char
ulongulong sbyte, byte, short, ushort, int, uint, long oder charsbyte, byte, short, ushort, int, uint, long, or char
charchar sbyte, byteoder shortsbyte, byte, or short
floatfloat sbyte, byte, short, ushort, int, uint, long, ulong. char oder decimalsbyte, byte, short, ushort, int, uint, long, ulong, char,or decimal
doubledouble sbyte, byte, short, ushort, int, uint, long, ulong, char, float oder decimalsbyte, byte, short, ushort, int, uint, long, ulong, char, float,or decimal
decimaldecimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float oder doublesbyte, byte, short, ushort, int, uint, long, ulong, char, float, or double

HinweiseRemarks

  • Die explizite numerische Konvertierung kann zu einem Genauigkeitsverlust führen oder eine Ausnahme auslösen, in der Regel OverflowException.The explicit numeric conversion may cause loss of precision or result in throwing an exception, typically an OverflowException.

  • Wenn Sie einen Wert von einem integralen Typ in einen anderen integralen Typ konvertieren, ist das Ergebnis vom Kontext der Überlaufprüfung abhängig.When you convert a value of an integral type to another integral type, the result depends on the overflow checking context. Die Konvertierung in einem geprüften Kontext ist erfolgreich, wenn der Quellwert sich innerhalb des Bereichs des Zieltyps befindet.In a checked context, the conversion succeeds if the source value is within the range of the destination type. Andernfalls wird eine OverflowException ausgelöst.Otherwise, an OverflowException is thrown. In einem ungeprüften Kontext ist die Konvertierung immer erfolgreich, und sie verläuft wie folgt:In an unchecked context, the conversion always succeeds, and proceeds as follows:

    • Wenn der Quelltyp größer als der Zieltyp ist, wird der Quellwert abgeschnitten, indem die wichtigsten „zusätzlichen“ Teile verworfen werden.If the source type is larger than the destination type, then the source value is truncated by discarding its "extra" most significant bits. Das Ergebnis wird dann als Wert des Zieltyps behandelt.The result is then treated as a value of the destination type.

    • Wenn der Quelltyp kleiner als der Zieltyp ist, wird der Quellwert entweder mit Vorzeichen oder Nullen (0) erweitert, sodass er die gleiche Größe wie der Zieltyp aufweist.If the source type is smaller than the destination type, then the source value is either sign-extended or zero-extended so that it is the same size as the destination type. Die Vorzeichenerweiterung wird verwendet, wenn der Quelltyp mit einem Vorzeichen versehen ist. Die Erweiterung mit Nullen (0) wird verwendet, wenn der Quelltyp mit keinem Vorzeichen versehen ist.Sign-extension is used if the source type is signed; zero-extension is used if the source type is unsigned. Das Ergebnis wird dann als Wert des Zieltyps behandelt.The result is then treated as a value of the destination type.

    • Wenn der Quelltyp die gleiche Größe wie der Zieltyp aufweist, wird der Quellwert als Wert vom Zieltyp behandelt.If the source type is the same size as the destination type, then the source value is treated as a value of the destination type.

  • Wenn Sie einen decimal-Wert in einen integralen Typ konvertieren, wird dieser Wert Richtung 0 (null) auf den nächsten Integralwert gerundet.When you convert a decimal value to an integral type, this value is rounded towards zero to the nearest integral value. Wenn der erzeugte Integralwert sich außerhalb des Bereichs des Zieltyps befindet, wird eine OverflowException ausgelöst.If the resulting integral value is outside the range of the destination type, an OverflowException is thrown.

  • Wenn Sie einen double- oderfloat-Wert in einen integralen Typ konvertieren, wird dieser Wert Richtung 0 (null) auf den nächsten Integralwert gerundet.When you convert a double or float value to an integral type, this value is rounded towards zero to the nearest integral value. Wenn der resultierende Integralwert sich außerhalb des Bereichs des Zieltyps befindet, hängt das Ergebnis vom Kontext der Überlaufprüfung ab.If the resulting integral value is outside the range of the destination type, the result depends on the overflow checking context. In einem geprüften Kontext wird eine OverflowException ausgelöst, während das Ergebnis in einem ungeprüften Kontext ein nicht angegebener Wert des Zieltyps ist.In a checked context, an OverflowException is thrown, while in an unchecked context, the result is an unspecified value of the destination type.

  • Wenn Sie double in float konvertieren, wird der double-Wert auf den nächsten float-Wert gerundet.When you convert double to float, the double value is rounded to the nearest float value. Wenn der double-Wert zu klein oder zu groß ist, um in den Zieltyp zu passen, ist das Ergebnis 0 (null) oder unendlich.If the double value is too small or too large to fit into the destination type, the result will be zero or infinity.

  • Wenn Sie float oder double in decimal konvertieren, wird der Quellwert in eine decimal-Darstellung konvertiert und bei Bedarf auf die nächste Zahl nach der achtundzwanzigsten Dezimalstelle gerundet.When you convert float or double to decimal, the source value is converted to decimal representation and rounded to the nearest number after the 28th decimal place if required. Je nach Wert des Quellwerts kann eines der folgenden Ergebnisse auftreten:Depending on the value of the source value, one of the following results may occur:

    • Wenn der Quellwert zu klein ist, als dass er als decimal dargestellt werden könnte, ist das Ergebnis 0 (null).If the source value is too small to be represented as a decimal, the result becomes zero.

    • Wenn der Quellwert NaN (nicht numerisch), unendlich oder zu groß ist, um als decimal dargestellt zu werden, wird eine OverflowException ausgelöst.If the source value is NaN (not a number), infinity, or too large to be represented as a decimal, an OverflowException is thrown.

  • Wenn Sie decimal in float oder double konvertieren, wird der decimal-Wert auf den nächsten double- oder float-Wert konvertiert.When you convert decimal to float or double, the decimal value is rounded to the nearest double or float value.

Weitere Informationen über explizite Konvertierungen finden Sie im Abschnitt Explicit conversions (Explizite Konvertierungen) der C#-Sprachspezifikation.For more information about explicit conversions, see the Explicit conversions section of the C# language specification.

Siehe auchSee also