(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Int64.TryParse-Methode (String, NumberStyles, IFormatProvider, Int64)

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturabhängigen Format in die entsprechende 64-Bit-Ganzzahl mit Vorzeichen. Ein Rückgabewert gibt an, ob die Konvertierung erfolgreich war oder nicht.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static bool TryParse(
	string s,
	NumberStyles style,
	IFormatProvider provider,
	out long result
)

Parameter

s
Typ: System.String
Eine Zeichenfolge, die die zu konvertierende Zahl enthält. Die Zeichenfolge wird unter Verwendung des durch style angegebenen Formats interpretiert.
style
Typ: System.Globalization.NumberStyles
Eine bitweise Kombination von Enumerationswerten, die die Stilelemente angeben, die in s vorhanden sein können. Ein häufig angegebener Wert ist NumberStyles.Integer.
provider
Typ: System.IFormatProvider
Ein Objekt, das kulturspezifische Formatierungsinformationen über s bereitstellt.
result
Typ: System.Int64
Diese Methode gibt bei erfolgreicher Konvertierung den 64-Bit-Ganzzahlwert mit Vorzeichen zurück, der der Zahl in s entspricht, und 0 (null), wenn die Konvertierung nicht durchgeführt werden konnte. Bei der Konvertierung tritt ein Fehler auf, wenn der s-Parameter null oder String.Empty ist, nicht in einem mit style kompatiblen Format vorliegt oder eine Zahl kleiner als MinValue oder größer als MaxValue darstellt. Dieser Parameter wird nicht initialisiert übergeben.

Rückgabewert

Typ: System.Boolean
true , wenn s erfolgreich konvertiert wurde, andernfalls false.

AusnahmeBedingung
ArgumentException

style ist kein NumberStyles-Wert.

- oder -

style ist keine Kombination des AllowHexSpecifier-Werts und des HexNumber-Werts.

Die TryParse-Methode entspricht der Parse-Methode, mit dem Unterschied, dass die TryParse-Methode bei einem Konvertierungsfehler keine Ausnahme auslöst. Es muss keine Ausnahmebehandlung ausgeführt werden, um einen Test auf FormatException auszuführen, falls s ungültig ist und nicht erfolgreich analysiert werden kann.

Der style-Parameter definiert die Stilelemente (wie Leerraum oder ein positives bzw. negatives Vorzeichen), die im s-Parameter zulässig sind, damit der Analysevorgang ordnungsgemäß ausgeführt werden kann. Hierbei muss es sich um eine Kombination von Bitflags aus der NumberStyles-Enumeration handeln. Je nach dem Wert von style kann der s-Parameter die folgenden Elemente enthalten:

[LR][$][Vorzeichen][Ziffern.]Ziffern[,Bruchziffern][e[Vorzeichen]Exponenten-Ziffern][LR]

Oder wenn der style-Parameter NumberStyles.AllowHexSpecifier enthält:

[LR]Hexadezimalziffern[LR]

Elemente in eckigen Klammern ("["und"]") sind optional. In der folgenden Tabelle werden die einzelnen Elemente beschrieben.

Element

Beschreibung

LR

Optionaler Leerraum. Leerraum kann am Anfang von s stehen, wenn style das NumberStyles.AllowLeadingWhite-Flag enthält, oder am Ende von s, wenn style das NumberStyles.AllowTrailingWhite-Flag enthält.

$

Ein kulturspezifisches Währungssymbol. Seine Position in der Zeichenfolge wird von der CurrencyPositivePattern-Eigenschaft des NumberFormatInfo-Objekts definiert, das von der GetFormat-Methode des provider-Parameters zurückgegeben wird. Das Währungssymbol kann in s angezeigt werden, wenn style das NumberStyles.AllowCurrencySymbol-Flag enthält.

sign

Ein optionales Vorzeichen. Das Vorzeichensymbol kann in s angezeigt werden, wenn style das NumberStyles.AllowLeadingSign-Flag oder dasNumberStyles.AllowTrailingSign-Flag enthält.

Ziffern

Bruchziffern

Exponenten-Ziffern

Eine Ziffernfolge von 0 bis einschließlich 9. Für Bruchziffern ist nur die Ziffer 0 gültig.

,

Ein kulturspezifisches Tausendertrennzeichen. Das Tausendertrennzeichen der von provider angegebenen Kultur kann in s enthalten sein, wenn style das NumberStyles.AllowThousands-Flag enthält.

.

Ein kulturabhängiges Dezimaltrennzeichen. Das von provider angegebene Dezimalzeichensymbol der aktuellen Kultur kann in s enthalten sein, wenn style das NumberStyles.AllowDecimalPoint-Flag enthält.

e

Das Zeichen "e" oder "E", das angibt, dass der Wert in Exponentialschreibweise dargestellt wird. Der s-Parameter kann eine Zahl in Exponentialschreibweise darstellen, wenn style das NumberStyles.AllowExponent-Flag enthält.

Hexadezimalziffern

Eine hexadezimale Ziffernfolge von 0 (null) bis einschließlich f oder 0 (null) bis einschließlich F.

Eine Zeichenfolge, die ausschließlich Dezimalziffern enthält (dies entspricht dem NumberStyles.None-Flag) wird immer erfolgreich analysiert. Die meisten der übrigen NumberStyles-Member steuern Elemente, die in dieser Eingabezeichenfolge nicht unbedingt vorhanden sein müssen. In der folgenden Tabelle wird angegeben, wie sich einzelne NumberStyles-Member auf die Elemente auswirken, die in s vorhanden sein können.

Nicht zusammengesetzte NumberStyles-Werte

Elemente, die neben Ziffern in s zulässig sind

NumberStyles.None

Nur Dezimalstellen.

NumberStyles.AllowDecimalPoint

Das Dezimaltrennzeichen (. )-Element und das Bruchziffern-Element. Bruchziffern muss jedoch mindestens eine 0-Stelle enthalten, andernfalls wird von der Methode false zurückgegeben.

NumberStyles.AllowExponent

Für den s-Parameter kann auch die Exponentialschreibweise verwendet werden. Der s-Parameter muss eine ganze Zahl innerhalb des Gültigkeitsbereichs des Int64-Datentyps ohne Bruchziffern ungleich 0 (null) darstellen.

NumberStyles.AllowLeadingWhite

Das LR-Element am Anfang von s.

NumberStyles.AllowTrailingWhite

Das LR-Element am Ende von s.

NumberStyles.AllowLeadingSign

Vor Ziffern kann ein Vorzeichen angezeigt werden.

NumberStyles.AllowTrailingSign

Nach Ziffern kann ein Vorzeichen angezeigt werden.

NumberStyles.AllowParentheses

Das Vorzeichen-Element in Form von Klammern, die den numerischen Wert einschließen.

NumberStyles.AllowThousands

Das Tausendertrennzeichen-Element (.).

NumberStyles.AllowCurrencySymbol

Das $-Element.

NumberStyles.Currency

Alle Elemente. Der s-Parameter kann keine Hexadezimalzahlen oder Zahlen in Exponentialschreibweise darstellen.

NumberStyles.Float

Das LR-Element am Anfang oder am Ende von s, Vorzeichen am Anfang von s und das Dezimaltrennzeichen (. ). Für den s-Parameter kann auch die Exponentialschreibweise verwendet werden.

NumberStyles.Number

Die Elemente LR, Vorzeichen, Tausendertrennzeichen (,) und Dezimaltrennzeichen (.).

NumberStyles.Any

Alle Stile, mit Ausnahme von s, können keine Hexadezimalzahlen darstellen.

Wenn das NumberStyles.AllowHexSpecifier-Flag verwendet wird, muss s ein Hexadezimalwert sein. Die einzigen anderen Flags, die in style enthalten sein können, sind NumberStyles.AllowLeadingWhite und NumberStyles.AllowTrailingWhite. (Die NumberStyles-Enumeration weist ein zusammengesetztes Format (NumberStyles.HexNumber) auf, das beide Leerraumflags einschließt.)

Der provider-Parameter ist eine IFormatProvider-Implementierung (z. B. ein CultureInfo-Objekt oder ein NumberFormatInfo-Objekt), deren GetFormat-Methode ein NumberFormatInfo-Objekt zurückgibt. Das NumberFormatInfo-Objekt stellt kulturabhängige Informationen zum Format von s bereit. Wenn provider den Wert null aufweist, wird das NumberFormatInfo-Objekt für die aktuelle Kultur verwendet.

Im folgenden Beispiel wird die TryParse(String, NumberStyles, IFormatProvider, Int64)-Methode mit einer Reihe verschiedener Zeichenfolgen- und NumberStyles-Werte aufgerufen.


using System;
using System.Globalization;

public class StringParsing
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;

      numericString = "106779";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      numericString = "-30677";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);

      styles = NumberStyles.AllowLeadingSign;
      CallTryParse(numericString, styles);

      numericString = "301677-";
      CallTryParse(numericString, styles);

      styles = styles | NumberStyles.AllowTrailingSign;
      CallTryParse(numericString, styles);

      numericString = "$10634";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      styles = NumberStyles.Integer | NumberStyles.AllowCurrencySymbol;
      CallTryParse(numericString, styles);

      numericString = "10345.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "22,593"; 
      styles = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallTryParse(numericString, styles);

      numericString = "12E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 

      numericString = "12E03";
      CallTryParse(numericString, styles); 

      numericString = "80c1";
      CallTryParse(numericString, NumberStyles.HexNumber);

      numericString = "0x80C1";
      CallTryParse(numericString, NumberStyles.HexNumber);      
   }

   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      int number;
      CultureInfo provider;

      // If currency symbol is allowed, use en-US culture.
      if ((styles & NumberStyles.AllowCurrencySymbol) > 0)
         provider = new CultureInfo("en-US");
      else
         provider = CultureInfo.InvariantCulture;

      bool result = Int32.TryParse(stringToConvert, styles, 
                                   provider, out number);
      if (result)
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number);
      else
         Console.WriteLine("Attempted conversion of '{0}' failed.", 
                           Convert.ToString(stringToConvert));
   }
}
// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft