BigInteger.TryParse Metoda

Definicja

Próbuje przekonwertować reprezentację ciągu liczby na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się.

Przeciążenia

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger)

Próbuje przekonwertować reprezentację ciągu liczby na BigInteger równoważną i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

TryParse(String, IFormatProvider, BigInteger)

Próbuje przeanalizować ciąg w wartość.

TryParse(ReadOnlySpan<Char>, IFormatProvider, BigInteger)

Próbuje przeanalizować zakres znaków w wartości.

TryParse(String, BigInteger)

Próbuje przekonwertować reprezentację ciągu liczby na BigInteger równoważną i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

TryParse(ReadOnlySpan<Char>, BigInteger)

Próbuje przekonwertować reprezentację liczby zawartej w określonym zakresie znaków tylko do odczytu na BigInteger jego odpowiednik i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

TryParse(String, NumberStyles, IFormatProvider, BigInteger)

Próbuje przekonwertować reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na BigInteger jego odpowiednik i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger)

Próbuje przekonwertować reprezentację ciągu liczby na BigInteger równoważną i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

public:
 static bool TryParse(ReadOnlySpan<char> value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public:
 static bool TryParse(ReadOnlySpan<char> value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = System::Numerics::INumberBase<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style, IFormatProvider? provider, out System.Numerics.BigInteger result);
public static bool TryParse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style, IFormatProvider provider, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (value As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As BigInteger) As Boolean

Parametry

value
ReadOnlySpan<Char>

Reprezentacja liczby jako zakresu znaków tylko do odczytu.

style
NumberStyles

Bitowa kombinacja wartości wyliczenia, która wskazuje elementy stylu, które mogą być obecne w obiekcie value. Typową wartością do określenia jest Integer.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.value

result
BigInteger

Gdy ta metoda zostanie zwrócona, zawiera odpowiednik liczby zawartej BigInteger w valueobiekcie lub Zero jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli value parametr jest pustym zakresem znaków lub nie jest w formacie zgodnym z parametrem style. Ten parametr jest przekazywany jako niezainicjowany.

Zwraca

true jeśli value pomyślnie została przekonwertowana; w przeciwnym razie false.

Wyjątki

style nie jest wartością NumberStyles .

-lub-

style zawiera flagę AllowHexSpecifier lub HexNumber wraz z inną wartością.

Uwagi

To przeciążenie jest podobne do Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) metody, z tą różnicą, że nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Ta metoda eliminuje konieczność użycia obsługi wyjątków do testowania, FormatException jeśli value jest nieprawidłowy i nie można go pomyślnie przeanalizować.

Parametr style definiuje elementy stylu (takie jak biały znak lub znak dodatni lub ujemny), które są dozwolone w parametrze value , aby operacja analizy zakończyła się powodzeniem. Musi być kombinacją flag bitowych z wyliczenia NumberStyles . W zależności od wartości parametr może stylevalue zawierać następujące elementy:

[ws] [][$znak][cyfry,]cyfry[.fractional_digits][E[znak]exponential_digits][ws]

style Jeśli parametr zawiera AllowHexSpecifierparametr , value parametr może zawierać następujące elementy:

[ws] hexdigits[ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.

Element Opis
Ws Opcjonalny odstęp. Białe znaki mogą pojawić się na początku value , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite lub na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite .
$ Symbol waluty specyficzny dla kultury. Jego położenie w value obiekcie jest definiowane przez CurrencyPositivePattern właściwość NumberFormatInfo obiektu zwróconą przez GetFormat metodę parametru provider . Symbol waluty może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol .
sign Opcjonalny znak. Znak może pojawić się na początku, value jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingSign . Nawiasy mogą służyć do wskazywania wartości ujemnej, value jeśli style zawiera flagę NumberStyles.AllowParentheses .
Cyfr Sekwencja cyfr od 0 do 9.
, Separator grupy specyficzny dla kultury. Separator grupy określonej przez provider kulturę może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowThousands .
. Symbol dziesiętny specyficzny dla kultury. Symbol punktu dziesiętnego kultury określonej przez provider może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowDecimalPoint .
fractional_digits Jedno lub więcej wystąpień cyfry 0. Cyfry ułamkowe mogą być wyświetlane tylko wtedy value , gdy style zawiera flagę NumberStyles.AllowDecimalPoint .
E Znak „e” lub „E”, który wskazuje, że wartość jest reprezentowana w zapisie wykładniczym (naukowym). Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent .
exponential_digits Sekwencja cyfr od 0 do 9. Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent .
hexdigits Sekwencja cyfr szesnastkowych od 0 do f lub od 0 do F.

Uwaga

Wszelkie znaki zakończenia NUL (U+0000) w obiekcie s są ignorowane przez operację analizowania, niezależnie od wartości argumentu style .

Wartości nieskładne NumberStyles Dodatkowe (poza cyframi) elementy dozwolone w wartości
None Tylko cyfry dziesiętne.
AllowDecimalPoint Elementy dziesiętne (.) i fractional_digits . Jednak fractional_digits musi składać się tylko z co najmniej jednej cyfry lub zwraca falsemetodę .
AllowExponent Znak "e" lub "E", który wskazuje notację wykładniczą wraz z exponential_digits. Jeśli value reprezentuje liczbę w notacji wykładniczej, nie może mieć składnika niezerowego, ułamkowego.
AllowLeadingWhite Element ws na początku value.
AllowTrailingWhite Element ws na końcu valueelementu .
AllowLeadingSign Element znaku przed cyframi.
AllowTrailingSign Element znaku po cyfrach.
AllowParentheses Element znaku w postaci nawiasów otaczających wartość liczbową.
AllowThousands Element separatora grupy (,).
AllowCurrencySymbol Element waluty ($).
Currency Wszystkie elementy. value Nie można jednak reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej.
Float Element ws na początku lub na końcu value, znak na początku value, i symbol dziesiętny (.). Parametr value może również używać notacji wykładniczej.
Number Elementy ws, sign, group separator (,) i dziesiętne (.).
Any Wszystkie elementy. value Nie można jednak reprezentować liczby szesnastkowej.

Jeśli jest używana flaga NumberStyles.AllowHexSpecifier , value musi być wartością szesnastkową. Jedynymi innymi flagami, które mogą być obecne, styleNumberStyles.AllowLeadingWhite i NumberStyles.AllowTrailingWhite. (Wyliczenie NumberStyles ma styl złożony, HexNumber, który zawiera obie flagi odstępu).

Parametr provider jest implementacją IFormatProvider . Metoda GetFormat zwraca NumberFormatInfo obiekt, który udostępnia informacje specyficzne dla kultury dotyczące formatu value. Parametr provider może być jednym z następujących:

  • CultureInfo Obiekt reprezentujący kulturę, która dostarcza informacje o formatowaniu. Metoda GetFormat zwraca NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu liczbowym dla tej kultury.

  • NumberFormatInfo Obiekt, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat po prostu zwraca się).

  • Obiekt niestandardowy, który implementuje IFormatProviderelement . Metoda GetFormat tworzy wystąpienie i zwraca NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu.

Jeśli provider jest to null, NumberFormatInfo używany jest obiekt bieżącej kultury.

Zobacz też

Dotyczy

TryParse(String, IFormatProvider, BigInteger)

Próbuje przeanalizować ciąg w wartość.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = IParsable<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : string * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As BigInteger) As Boolean

Parametry

s
String

Ciąg do analizy.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury dotyczące selementu .

result
BigInteger

Gdy ta metoda zostanie zwrócona, zawiera wynik pomyślnego analizowania s lub niezdefiniowanej wartości po awarii.

Zwraca

true jeśli s został pomyślnie przeanalizowany; w przeciwnym razie false.

Dotyczy

TryParse(ReadOnlySpan<Char>, IFormatProvider, BigInteger)

Próbuje przeanalizować zakres znaków w wartości.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = ISpanParsable<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As BigInteger) As Boolean

Parametry

s
ReadOnlySpan<Char>

Zakres znaków do przeanalizowania.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury dotyczące selementu .

result
BigInteger

Gdy ta metoda zostanie zwrócona, zawiera wynik pomyślnego analizowania swartości lub niezdefiniowanej wartości w przypadku niepowodzenia.

Zwraca

true jeśli s został pomyślnie przeanalizowany; w przeciwnym razie false.

Dotyczy

TryParse(String, BigInteger)

Próbuje przekonwertować reprezentację ciągu liczby na BigInteger równoważną i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

public:
 static bool TryParse(System::String ^ value, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public static bool TryParse (string value, out System.Numerics.BigInteger result);
public static bool TryParse (string? value, out System.Numerics.BigInteger result);
static member TryParse : string * BigInteger -> bool
Public Shared Function TryParse (value As String, ByRef result As BigInteger) As Boolean

Parametry

value
String

Reprezentacja ciągu liczby.

result
BigInteger

Gdy ta metoda zostanie zwrócona, zawiera BigInteger odpowiednik liczby zawartej w valueobiekcie lub zero (0), jeśli konwersja zakończy się niepowodzeniem. Konwersja kończy się niepowodzeniem value , jeśli parametr jest null lub nie ma poprawnego formatu. Ten parametr jest przekazywany jako niezainicjowany.

Zwraca

true jeśli value pomyślnie została przekonwertowana; w przeciwnym razie false.

Wyjątki

value to null.

Przykłady

W poniższym przykładzie użyto metody do TryParse(String, BigInteger) utworzenia wystąpienia dwóch BigInteger obiektów. Jeśli konwersje powiedzą się, pomnoży każdy obiekt przez inną liczbę, a następnie wywołuje Compare metodę w celu określenia relacji między dwoma obiektami.

BigInteger number1, number2;
bool succeeded1 = BigInteger.TryParse("-12347534159895123", out number1);
bool succeeded2 = BigInteger.TryParse("987654321357159852", out number2);
if (succeeded1 && succeeded2)
{
   number1 *= 3;
   number2 *= 2;
   switch (BigInteger.Compare(number1, number2))
   {
      case -1:
         Console.WriteLine("{0} is greater than {1}.", number2, number1);
         break;
      case 0:
         Console.WriteLine("{0} is equal to {1}.", number1, number2);
         break;
      case 1:
         Console.WriteLine("{0} is greater than {1}.", number1, number2);
         break;
   }
}
else
{
   if (! succeeded1)
      Console.WriteLine("Unable to initialize the first BigInteger value.");

   if (! succeeded2)
      Console.WriteLine("Unable to initialize the second BigInteger value.");
}
// The example displays the following output:
//      1975308642714319704 is greater than -37042602479685369.
Dim number1 As BigInteger = BigInteger.Zero
Dim number2 As BigInteger = BigInteger.Zero
Dim succeeded1 As Boolean = BigInteger.TryParse("-12347534159895123", number1)
Dim succeeded2 As Boolean = BigInteger.TryParse("987654321357159852", number2)
If succeeded1 AndAlso succeeded2
   number1 *= 3
   number2 *= 2
   Select Case BigInteger.Compare(number1, number2)
      Case -1
         Console.WriteLine("{0} is greater than {1}.", number2, number1)
      Case 0
         Console.WriteLine("{0} is equal to {1}.", number1, number2)
      Case 1
         Console.WriteLine("{0} is greater than {1}.", number1, number2)
   End Select      
Else
   If Not succeeded1 Then 
      Console.WriteLine("Unable to initialize the first BigInteger value.")
   End If
   If Not succeeded2 Then
      Console.WriteLine("Unable to initialize the second BigInteger value.")
   
   End If
End If
' The example displays the following output:
'      1975308642714319704 is greater than -37042602479685369.

Uwagi

Metoda jest podobna TryParse(String, BigInteger)Parse(String) do metody, z tą różnicą, że nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Ta metoda eliminuje konieczność użycia obsługi wyjątków w celu przetestowania elementu FormatException , jeśli value jest nieprawidłowy i nie można go pomyślnie przeanalizować.

Parametr value powinien być reprezentacją ciągu liczby dziesiętnej w następującej postaci:

[ws] [znak] cyfry[ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.

Element Opis
Ws Opcjonalny odstęp.
sign Opcjonalny znak. Prawidłowe znaki są określane przez NumberFormatInfo.NegativeSign właściwości i NumberFormatInfo.PositiveSign bieżącej kultury.
Cyfr Sekwencja cyfr dziesiętnych od 0 do 9.

Uwaga

Ciąg określony przez value parametr nie może zawierać żadnych separatorów grup ani separatora dziesiętnego i nie może mieć części dziesiętnej.

Parametr value jest interpretowany przy użyciu NumberStyles.Integer stylu. Poza cyframi dziesiętnymi dopuszcza się tylko spacje początkowe i końcowe z wiodącym znakiem. Aby jawnie zdefiniować elementy stylu przy użyciu informacji o formatowaniu specyficznym dla kultury, które mogą być obecne w metodzie value, wywołaj metodę TryParse(String, NumberStyles, IFormatProvider, BigInteger) .

Parametr value jest analizowany przy użyciu informacji formatowania w NumberFormatInfo obiekcie dla bieżącej kultury. Aby uzyskać więcej informacji, zobacz NumberFormatInfo.CurrentInfo.

To przeciążenie interpretuje wszystkie cyfry w parametrze value jako cyfry dziesiętne. Aby przeanalizować reprezentację ciągu szesnastkowej liczby, wywołaj TryParse(String, NumberStyles, IFormatProvider, BigInteger) zamiast tego przeciążenie.

Zobacz też

Dotyczy

TryParse(ReadOnlySpan<Char>, BigInteger)

Próbuje przekonwertować reprezentację liczby zawartej w określonym zakresie znaków tylko do odczytu na BigInteger jego odpowiednik i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.

public:
 static bool TryParse(ReadOnlySpan<char> value, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public static bool TryParse (ReadOnlySpan<char> value, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<char> * BigInteger -> bool
Public Shared Function TryParse (value As ReadOnlySpan(Of Char), ByRef result As BigInteger) As Boolean

Parametry

value
ReadOnlySpan<Char>

Reprezentacja liczby jako zakresu znaków tylko do odczytu.

result
BigInteger

Gdy ta metoda zostanie zwrócona, zawiera BigInteger odpowiednik liczby zawartej w valueobiekcie lub zero (0), jeśli konwersja zakończy się niepowodzeniem. Konwersja kończy się niepowodzeniem, jeśli value parametr jest pustym zakresem znaków lub nie jest poprawnym formatem. Ten parametr jest przekazywany jako niezainicjowany.

Zwraca

true jeśli value pomyślnie została przekonwertowana; w przeciwnym razie false.

Zobacz też

Dotyczy

TryParse(String, NumberStyles, IFormatProvider, BigInteger)

Próbuje przekonwertować reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na jego BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się.

public:
 static bool TryParse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public:
 static bool TryParse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = System::Numerics::INumberBase<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (string value, System.Globalization.NumberStyles style, IFormatProvider provider, out System.Numerics.BigInteger result);
public static bool TryParse (string? value, System.Globalization.NumberStyles style, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (value As String, style As NumberStyles, provider As IFormatProvider, ByRef result As BigInteger) As Boolean

Parametry

value
String

Reprezentacja ciągu liczby. Ciąg jest interpretowany przy użyciu stylu określonego przez style.

style
NumberStyles

Bitowa kombinacja wartości wyliczenia, która wskazuje elementy stylu, które mogą być obecne w obiekcie value. Typową wartością do określenia jest Integer.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.value

result
BigInteger

Gdy ta metoda zostanie zwrócona, zawiera odpowiednik liczby zawartej BigInteger w valueobiekcie lub Zero jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli value parametr jest null lub nie jest w formacie zgodnym z parametrem style. Ten parametr jest przekazywany jako niezainicjowany.

Zwraca

truevalue jeśli parametr został pomyślnie przekonwertowany; w przeciwnym razie . false

Wyjątki

style nie jest wartością NumberStyles .

-lub-

style zawiera flagę AllowHexSpecifier lub HexNumber wraz z inną wartością.

Przykłady

W poniższym przykładzie niektóre wywołania TryParse(String, NumberStyles, IFormatProvider, BigInteger) metody używają różnych kombinacji wartości parametrów style i provider .

string numericString;
BigInteger number = BigInteger.Zero;

// Call TryParse with default values of style and provider.
numericString = "  -300   ";
if (BigInteger.TryParse(numericString, NumberStyles.Integer,
                       null, out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with the default value of style and
// a provider supporting the tilde as negative sign.
numericString = "  -300   ";
if (BigInteger.TryParse(numericString, NumberStyles.Integer,
                       new BigIntegerFormatProvider(), out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with only AllowLeadingWhite and AllowTrailingWhite.
// Method returns false because of presence of negative sign.
numericString = "  -500   ";
if (BigInteger.TryParse(numericString,
                        NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
                        new BigIntegerFormatProvider(), out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with AllowHexSpecifier and a hex value.
numericString = "F14237FFAAC086455192";
if (BigInteger.TryParse(numericString,
                        NumberStyles.AllowHexSpecifier,
                        null, out number))
   Console.WriteLine("'{0}' was converted to {1} (0x{1:x}).",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with AllowHexSpecifier and a negative hex value.
// Conversion fails because of presence of negative sign.
numericString = "-3af";
if (BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier,
                       new BigIntegerFormatProvider(), out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with only NumberStyles.None.
// Conversion fails because of presence of white space and sign.
numericString = " -300 ";
if (BigInteger.TryParse(numericString, NumberStyles.None,
                       new BigIntegerFormatProvider(), out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
// Conversion fails because the string is formatted for the en-US culture.
numericString = "9,031,425,666,123,546.00";
if (BigInteger.TryParse(numericString, NumberStyles.Any,
                       new CultureInfo("fr-FR"), out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);

// Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
// Conversion succeeds because the string is properly formatted
// For the fr-FR culture.
numericString = "9 031 425 666 123 546,00";
if (BigInteger.TryParse(numericString, NumberStyles.Any,
                       new CultureInfo("fr-FR"), out number))
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number);
else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString);
// The example displays the following output:
//    '  -300   ' was converted to -300.
//    Conversion of '  -300   ' to a BigInteger failed.
//    Conversion of '  -500   ' to a BigInteger failed.
//    'F14237FFAAC086455192' was converted to -69613977002644837412462 (0xf14237ffaac086455192).
//    Conversion of '-3af' to a BigInteger failed.
//    Conversion of ' -300 ' to a BigInteger failed.
//    Conversion of '9,031,425,666,123,546.00' to a BigInteger failed.
//    '9 031 425 666 123 546,00' was converted to 9031425666123546.
Dim numericString As String
Dim number As BigInteger = BigInteger.Zero

' Call TryParse with default values of style and provider.
numericString = "  -300   "
If BigInteger.TryParse(numericString, NumberStyles.Integer,
                       Nothing, number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If                                             

' Call TryParse with the default value of style and 
' a provider supporting the tilde as negative sign.
numericString = "  -300   "
If BigInteger.TryParse(numericString, NumberStyles.Integer,
                       New BigIntegerFormatProvider(), number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If                                             

' Call TryParse with only AllowLeadingWhite and AllowTrailingWhite.
' Method returns false because of presence of negative sign.
numericString = "  -500   "
If BigInteger.TryParse(numericString,
                    NumberStyles.AllowLeadingWhite Or NumberStyles.AllowTrailingWhite,
                    New BigIntegerFormatProvider(), number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If                                             

' Call TryParse with AllowHexSpecifier and a hex value.
numericString = "F14237FFAAC086455192"
If BigInteger.TryParse(numericString,
                    NumberStyles.AllowHexSpecifier,
                    Nothing, number) Then
   Console.WriteLine("'{0}' was converted to {1} (0x{1:x}).",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If                                             

' Call TryParse with AllowHexSpecifier and a negative hex value.
' Conversion fails because of presence of negative sign.
numericString = "-3af"
If BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier,
                       New BigIntegerFormatProvider(), number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If                                             

' Call TryParse with only NumberStyles.None.
' Conversion fails because of presence of white space and sign.
numericString = " -300 "
If BigInteger.TryParse(numericString, NumberStyles.None,
                       New BigIntegerFormatProvider(), number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If 
                                            
' Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
' Conversion fails because the string is formatted for the en-US culture.
numericString = "9,031,425,666,123,546.00"
If BigInteger.TryParse(numericString, NumberStyles.Any,
                       New CultureInfo("fr-FR"), number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If

' Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
' Conversion succeeds because the string is properly formatted 
' For the fr-FR culture.
numericString = "9 031 425 666 123 546,00"
If BigInteger.TryParse(numericString, NumberStyles.Any,
                       New CultureInfo("fr-FR"), number) Then
   Console.WriteLine("'{0}' was converted to {1}.",
                     numericString, number)                             
Else
   Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
                     numericString)
End If
' The example displays the following output:
'    '  -300   ' was converted to -300.
'    Conversion of '  -300   ' to a BigInteger failed.
'    Conversion of '  -500   ' to a BigInteger failed.
'    'F14237FFAAC086455192' was converted to -69613977002644837412462 (0xf14237ffaac086455192).
'    Conversion of '-3af' to a BigInteger failed.
'    Conversion of ' -300 ' to a BigInteger failed.
'    Conversion of '9,031,425,666,123,546.00' to a BigInteger failed.
'    '9 031 425 666 123 546,00' was converted to 9031425666123546.

Liczba wywołań poszczególnych wywołań metody TryParse(String, NumberStyles, IFormatProvider, BigInteger) przekazuje wystąpienie następującej BigIntegerFormatProvider klasy, która definiuje tyldę (~) jako znak ujemny.

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}
Public Class BigIntegerFormatProvider : Implements IFormatProvider
   Public Function GetFormat(formatType As Type) As Object _
                            Implements IFormatProvider.GetFormat
      If formatType Is GetType(NumberFormatInfo) Then
         Dim numberFormat As New NumberFormatInfo
         numberFormat.NegativeSign = "~"
         Return numberFormat
      Else
         Return Nothing
      End If      
   End Function
End Class

Uwagi

Metoda jest podobna TryParse(String, NumberStyles, IFormatProvider, BigInteger)Parse(String, NumberStyles, IFormatProvider) do metody, z tą różnicą, że nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Ta metoda eliminuje konieczność użycia obsługi wyjątków do testowania, FormatException jeśli value jest nieprawidłowy i nie można go pomyślnie przeanalizować.

Parametr style definiuje elementy stylu (takie jak biały znak lub znak dodatni lub ujemny), które są dozwolone w parametrze value , aby operacja analizy zakończyła się powodzeniem. Musi być kombinacją flag bitowych z wyliczenia NumberStyles . W zależności od wartości parametr może stylevalue zawierać następujące elementy:

[ws] [][$znak][cyfry,]cyfry[.fractional_digits][E[znak]exponential_digits][ws]

style Jeśli parametr zawiera AllowHexSpecifierparametr , value parametr może zawierać następujące elementy:

[ws] hexdigits[ws]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.

Element Opis
Ws Opcjonalny odstęp. Białe znaki mogą pojawić się na początku value , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite lub na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite .
$ Symbol waluty specyficzny dla kultury. Jego pozycja w ciągu jest definiowana przez CurrencyPositivePattern właściwość NumberFormatInfo obiektu zwróconego przez GetFormat metodę parametru provider . Symbol waluty może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol .
sign Opcjonalny znak. Znak może pojawić się na początku, value jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingSign . Nawiasy mogą służyć do wskazywania wartości ujemnej, value jeśli style zawiera flagę NumberStyles.AllowParentheses .
Cyfr Sekwencja cyfr od 0 do 9.
, Separator grupy specyficzny dla kultury. Separator grupy określonej przez provider kulturę może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowThousands .
. Symbol dziesiętny specyficzny dla kultury. Symbol punktu dziesiętnego kultury określonej przez provider może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowDecimalPoint .
fractional_digits Jedno lub więcej wystąpień cyfry 0. Cyfry ułamkowe mogą być wyświetlane tylko wtedy value , gdy style zawiera flagę NumberStyles.AllowDecimalPoint .
E Znak „e” lub „E”, który wskazuje, że wartość jest reprezentowana w zapisie wykładniczym (naukowym). Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent .
exponential_digits Sekwencja cyfr od 0 do 9. Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent .
hexdigits Sekwencja cyfr szesnastkowych od 0 do f lub od 0 do F.

Uwaga

Wszystkie znaki NUL zakończenia (U+0000) w s obiekcie są ignorowane przez operację analizowania, niezależnie od wartości argumentu style .

Ciąg z cyframi dziesiętnymi (który odpowiada flagi NumberStyles.None ) zawsze jest analizowanych pomyślnie. Większość pozostałych NumberStyles elementów członkowskich kontroluje, które mogą być obecne, ale nie muszą być obecne, w tym ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne NumberStyles elementy członkowskie wpływają na elementy, które mogą być obecne w programie value.

Wartości nieskładne NumberStyles Dodatkowe (poza cyframi) elementy dozwolone w wartości
None Tylko cyfry dziesiętne.
AllowDecimalPoint Liczba dziesiętna (.) i fractional_digits elementów. Jednak fractional_digits musi składać się tylko z co najmniej jednej cyfry lub metoda zwraca wartość false.
AllowExponent Znak "e" lub "E", który wskazuje notację wykładniczą, wraz z exponential_digits. Jeśli value reprezentuje liczbę w notacji wykładniczej, nie może mieć składnika ułamkowego niezerowego.
AllowLeadingWhite Element ws na początku .value
AllowTrailingWhite Element ws na końcu elementu value.
AllowLeadingSign Element znaku przed cyframi.
AllowTrailingSign Element znaku po cyfrach.
AllowParentheses Element znaku w postaci nawiasów otaczających wartość liczbową.
AllowThousands Element separatora grup (,).
AllowCurrencySymbol Element waluty ($).
Currency Wszystkie elementy. value Nie można jednak reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej.
Float Element ws na początku lub na końcu valueznaku na początku , i symbol separatora dziesiętnego value(.). Parametr value może również używać notacji wykładniczej.
Number Elementy ws, sign, group separator (,) i decimal point (.).
Any Wszystkie elementy. value Nie można jednak reprezentować liczby szesnastkowej.

Ważne

Jeśli używasz TryParse metody , aby zaokrąglić reprezentację BigInteger ciągu wartości wyjściowej przez ToString metodę, należy użyć BigInteger.ToString(String) metody z specyfikatorem formatu "R", aby wygenerować reprezentację BigInteger ciągu wartości. W przeciwnym razie reprezentacja BigInteger ciągu zachowuje tylko 50 najbardziej znaczących cyfr oryginalnej wartości, a dane mogą zostać utracone w przypadku użycia TryParse metody w celu przywrócenia BigInteger wartości.

Jeśli flaga NumberStyles.AllowHexSpecifier jest używana, value musi być wartością szesnastkową. Jedynymi innymi flagami, które mogą być obecne w systemie style , są i NumberStyles.AllowLeadingWhiteNumberStyles.AllowTrailingWhite. (Wyliczenie NumberStyles ma styl złożony, HexNumber, który zawiera obie flagi odstępu).

Uwaga

Jeśli value jest reprezentacją ciągu liczby szesnastkowej, nie może być poprzedzony żadną dekoracją (taką jak 0x lub &h), która odróżnia ją jako liczbę szesnastkową. To powoduje niepowodzenie konwersji.

Jeśli value jest ciągiem szesnastkowym, TryParse(String, NumberStyles, IFormatProvider, BigInteger) metoda interpretuje value jako liczbę ujemną przechowywaną przy użyciu reprezentacji uzupełniającej dwóch pierwszych, jeśli dwie pierwsze cyfry szesnastkowe są większe lub równe 0x80. Innymi słowy, metoda interpretuje bit najwyższej kolejności pierwszego bajtu jako value bit znaku. Aby upewnić się, że ciąg szesnastkowy jest poprawnie interpretowany jako liczba dodatnia, pierwsza cyfra w value musi mieć wartość zero. Na przykład metoda interpretuje 0x80 jako wartość ujemną, ale interpretuje 0x080 wartość lub 0x0080 jako wartość dodatnią. Poniższy przykład ilustruje różnicę między ciągami szesnastkowymi reprezentującymi wartości ujemne i dodatnie.

using System;
using System.Globalization;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
                              "080", "0E293", "0F9A2FF", "0FFFFFFFF",
                              "0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
      BigInteger number = BigInteger.Zero;

      foreach (string hexString in hexStrings)
      {
         if (BigInteger.TryParse(hexString, NumberStyles.AllowHexSpecifier,
                                 null, out number))
            Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
         else
            Console.WriteLine("Cannot convert '{0}' to a BigInteger.", hexString);
      }
   }
}
// The example displays the following output:
//       Converted 0x80 to -128.
//       Converted 0xE293 to -7533.
//       Converted 0xF9A2FF to -417025.
//       Converted 0xFFFFFFFF to -1.
//       Converted 0x080 to 128.
//       Converted 0x0E293 to 58003.
//       Converted 0x0F9A2FF to 16360191.
//       Converted 0x0FFFFFFFF to 4294967295.
//       Converted 0x0080 to 128.
//       Converted 0x00E293 to 58003.
//       Converted 0x00F9A2FF to 16360191.
//       Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF", 
                                     "080", "0E293", "0F9A2FF", "0FFFFFFFF",  
                                     "0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
      Dim number As BigInteger = BigInteger.Zero
      
      For Each hexString As String In hexStrings
         If BigInteger.TryParse(hexString, NumberStyles.AllowHexSpecifier, 
                                Nothing, number) Then
            Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
         Else
            Console.WriteLine("Cannot convert '{0}' to a BigInteger.", hexString)
         End If
      Next         
   End Sub
End Module
' The example displays the following output:
'       Converted 0x80 to -128.
'       Converted 0xE293 to -7533.
'       Converted 0xF9A2FF to -417025.
'       Converted 0xFFFFFFFF to -1.
'       Converted 0x080 to 128.
'       Converted 0x0E293 to 58003.
'       Converted 0x0F9A2FF to 16360191.
'       Converted 0x0FFFFFFFF to 4294967295.
'       Converted 0x0080 to 128.
'       Converted 0x00E293 to 58003.
'       Converted 0x00F9A2FF to 16360191.
'       Converted 0x00FFFFFFFF to 4294967295.

Parametr provider jest implementacją IFormatProvider . Metoda GetFormat zwraca NumberFormatInfo obiekt, który dostarcza informacji specyficznych dla kultury o formacie value. Parametr provider może być jednym z następujących:

  • CultureInfo Obiekt reprezentujący kulturę dostarczającą informacje o formatowaniu. Metoda GetFormat zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu liczbowym dla tej kultury.

  • NumberFormatInfo Obiekt, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat samego zwraca się).

  • Obiekt niestandardowy, który implementuje IFormatProviderelement . Metoda GetFormat tworzy wystąpienie i zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu.

Jeśli provider parametr ma nullwartość , NumberFormatInfo używany jest obiekt bieżącej kultury.

Zobacz też

Dotyczy