Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

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

 

Veröffentlicht: Oktober 2016

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturspezifischen 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
Type: System.String

Eine Zeichenfolge, die die zu konvertierende Zahl enthält. Die Zeichenfolge wird unter Verwendung des durch style angegebenen Formats interpretiert.

style
Type: 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
Type: System.IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.

result
Type: 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; in result ursprünglich übergebene Werte werden ausnahmslos überschrieben.

Rückgabewert

Type: System.Boolean

true, wenn s erfolgreich konvertiert wurde, andernfalls false.

Exception Condition
ArgumentException

style ist kein NumberStyles-Wert.

- oder -

style ist keine Kombination von AllowHexSpecifier- und HexNumber-Werten.

Die TryParse Methode entspricht der Parse -Methode, mit Ausnahme der TryParse Methode löst keine Ausnahme aus, wenn die Konvertierung fehlschlägt. Es entfällt die Notwendigkeit, mit der Behandlung von Ausnahmen für Testen einer FormatException , s ist ungültig und kann nicht erfolgreich analysiert werden.

Die style Parameter definiert die Style-Elemente (z. B. leer- oder eine positiven oder negativen Vorzeichen), die in zulässig sind die s Parameter, damit der Analysevorgang erfolgreich ausgeführt werden kann. Es muss eine Kombination von Bitflags aus der NumberStyles Enumeration. Abhängig vom Wert der styledie s -Parameter enthält möglicherweise die folgenden Elemente:

[ws] [$] [anmelden] [Ziffern] Ziffern [.fractional_digits] [-e [Anmeldung] Exponenten-Ziffern] [ws]

Oder, wenn die style Parameter enthält NumberStyles.AllowHexSpecifier:

[ws] Hexdigits [ws]

Elemente in eckigen Klammern ([ und ]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element

Beschreibung

ws

Optionaler Leerraum. Leerzeichen am Anfang stehen s Wenn style enthält die NumberStyles.AllowLeadingWhite Flag oder am Ende der s Wenn style enthält die NumberStyles.AllowTrailingWhite Flag.

$

Eine kulturspezifische Währungssymbol. Seine Position in der Zeichenfolge wird definiert, indem die CurrencyPositivePattern Eigenschaft von der NumberFormatInfo zurückgegebenes Objekt die GetFormat Methode der provider Parameter. Das Währungssymbol stehen s Wenn style enthält die NumberStyles.AllowCurrencySymbol Flag.

Vorzeichen

Einem optionalen Vorzeichen. Ein Vorzeichensymbol erscheinen s Wenn style enthält die NumberStyles.AllowLeadingSign oder NumberStyles.AllowTrailingSign Flags.

Ziffern

Bruchziffern

Exponenten-Ziffern

Eine Folge von Ziffern zwischen 0 und 9. Für Bruchziffern, werden nur die Ziffer 0 gültig ist.

,

Eine kulturspezifische Tausende Trennzeichen. Das Tausendertrennzeichen Trennzeichen, der vom angegebenen Kultur provider erscheinen s Wenn style enthält die NumberStyles.AllowThousands Flag.

.

Eine kulturspezifische Dezimaltrennzeichen. Das Dezimaltrennzeichen des vom angegebenen Kultur provider erscheinen s Wenn style enthält die NumberStyles.AllowDecimalPoint Flag.

e

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

hexdigits

Eine Sequenz von hexadezimalen Ziffern von 0 bis f oder 0 bis f.

Eine Zeichenfolge mit nur Dezimalstellen (entspricht der NumberStyles.None Flag) immer erfolgreich analysiert. Die meisten der verbleibenden NumberStyles Member steuern Elemente, die nicht unbedingt in dieser Eingabezeichenfolge vorhanden sein. In der folgenden Tabelle gibt an, wie einzelne NumberStyles Mitglieder Auswirkungen auf die Elemente, die möglicherweise vorhandene in s.

Nicht zusammengesetzte NumberStyles-Werte

Elemente in s neben Ziffern zulässig

NumberStyles.None

Nur Dezimalstellen.

NumberStyles.AllowDecimalPoint

Das Dezimaltrennzeichen ( . ) und Bruchziffern Elemente. Allerdings Bruchziffern muss bestehen lediglich eine oder mehrere 0-Ziffern oder die Methode gibt false.

NumberStyles.AllowExponent

Die s Parameter können auch Exponentialschreibweise. Die s Parameter muss eine ganze Zahl innerhalb des Bereichs von darstellen der Int64 Datentyp ohne Bruchziffern ungleich 0 (null).

NumberStyles.AllowLeadingWhite

Die ws Element am Anfang des s.

NumberStyles.AllowTrailingWhite

Die ws Element am Ende der s.

NumberStyles.AllowLeadingSign

Ein Vorzeichen können angezeigt werden, bevor Sie Ziffern.

NumberStyles.AllowTrailingSign

Eine Anmeldung kann angezeigt werden, nach dem Ziffern.

NumberStyles.AllowParentheses

Die Anmeldung Element in Form von Klammern, die den numerischen Wert einschließen.

NumberStyles.AllowThousands

Das Tausendertrennzeichen Trennzeichen ( , ) Element.

NumberStyles.AllowCurrencySymbol

Die $ Element.

NumberStyles.Currency

Alle Elemente. Die s Parameter keine hexadezimale Zahl oder einer Zahl in Exponentialschreibweise darstellen.

NumberStyles.Float

Die ws Element am Anfang oder Ende des s, Anmeldung am Anfang des s, und das Dezimaltrennzeichen ( . ) Symbol. Die s Parameter können auch Exponentialschreibweise.

NumberStyles.Number

Die ws, Anmeldung, Tausende Trennzeichen (,), und das Dezimaltrennzeichen (.) Elemente.

NumberStyles.Any

Alle Formatvorlagen außer s eine hexadezimale Zahl nicht darstellen kann.

Wenn die NumberStyles.AllowHexSpecifier -Flag wird verwendet, s Hexadezimalwert ohne Präfix werden muss. Z. B. "C9AF3" erfolgreich analysiert, "0xC9AF3" jedoch nicht. Die einzigen anderen Flags, die im vorhanden sein können style sind NumberStyles.AllowLeadingWhite und NumberStyles.AllowTrailingWhite. (Die NumberStyles -Enumeration hat ein zusammengesetztes Format NumberStyles.HexNumber, beide Flags Leerzeichen enthält.)

Die provider Parameter ist ein IFormatProvider Implementierung, z. B. eine CultureInfo Objekt oder eine NumberFormatInfo Objekt, dessen GetFormat Methode gibt ein NumberFormatInfo Objekt. Die NumberFormatInfo Objekt stellt kulturspezifische Informationen zum Format von s. Wenn provider ist nulldie NumberFormatInfo -Objekt für die aktuelle Kultur verwendet wird.

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

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)
   {
      long 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 = Int64.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.

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: