Бөлісу құралы:


BigInteger.TryParse Метод

Определение

Пытается преобразовать строковое представление числа в его BigInteger эквивалент и возвращает значение, указывающее, выполнено ли преобразование успешно.

Перегрузки

Имя Описание
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger)

Пытается преобразовать строковое представление числа в его BigInteger эквивалент и возвращает значение, указывающее, выполнено ли преобразование успешно.

TryParse(ReadOnlySpan<Byte>, BigInteger)
TryParse(ReadOnlySpan<Char>, BigInteger)

Пытается преобразовать представление числа, содержащегося в указанном диапазоне символов только для чтения, в его BigInteger эквивалент, и возвращает значение, указывающее, выполнено ли преобразование успешно.

TryParse(String, BigInteger)

Пытается преобразовать строковое представление числа в его BigInteger эквивалент и возвращает значение, указывающее, выполнено ли преобразование успешно.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, BigInteger)
TryParse(String, IFormatProvider, BigInteger)

Пытается проанализировать строку в значение.

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, BigInteger)
TryParse(String, NumberStyles, IFormatProvider, BigInteger)

Пытается преобразовать строковое представление числа в указанном стиле и формате языка и региональных параметров в эквивалентный BigInteger формат и возвращает значение, указывающее, успешно ли выполнено преобразование.

TryParse(ReadOnlySpan<Char>, IFormatProvider, BigInteger)

Пытается проанализировать диапазон символов в значение.

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

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Пытается преобразовать строковое представление числа в его BigInteger эквивалент и возвращает значение, указывающее, выполнено ли преобразование успешно.

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, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
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

Параметры

value
ReadOnlySpan<Char>

Представление числа в виде диапазона символов только для чтения.

style
NumberStyles

Побитовое сочетание значений перечисления, указывающее элементы стиля, которые могут присутствовать в value. Обычное значение, которое нужно указать Integer.

provider
IFormatProvider

Объект, предоставляющий сведения valueо форматировании с учетом языка и региональных параметров.

result
BigInteger

Когда этот метод возвращается, содержит BigInteger эквивалент числа, содержащегося в value, или Zero , если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если value параметр является пустым диапазоном символов или не соответствует формату, который styleсоответствует требованиям. Этот параметр передается неинициализирован.

Возвращаемое значение

true Значение , если value оно было успешно преобразовано; в противном случае false.

Исключения

style значение не является значением NumberStyles .

–или–

style AllowHexSpecifier включает или HexNumber флаг вместе с другим значением.

Комментарии

Эта перегрузка Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) похожа на метод, за исключением того, что он не создает исключение, если преобразование завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для FormatExceptionvalue проверки недопустимого и не может быть успешно проанализирована.

Параметр style определяет элементы стиля (например, пробелы или положительный или отрицательный знак), которые разрешены в value параметре для успешной операции синтаксического анализа. Это должно быть сочетание битовых флагов из NumberStyles перечисления. В зависимости от значения stylevalue параметр может включать следующие элементы:

[ws][$][знак][цифры,]цифры[.fractional_digits][E[sign]exponential_digits][ws]

Если параметр style включает в себя AllowHexSpecifier, value параметр может включать следующие элементы:

[ws]hexdigits[ws]

Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Description
Ws Необязательный пробел. Пробел может отображаться в начале value , если style он включает NumberStyles.AllowLeadingWhite флаг или в конце value , если style этот флаг включен NumberStyles.AllowTrailingWhite .
$ Символ валюты, зависящий от языка и региональных параметров. Его позиция value определяется свойством NumberFormatInfoCurrencyPositivePattern объекта, возвращаемого GetFormat методом provider параметра. Символ валюты может отображаться в value том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг.
знак Необязательный знак. Знак может появиться в начале value , если style он включает NumberStyles.AllowLeadingSign флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingSign флаг. Скобки можно использовать для value указания отрицательного NumberStyles.AllowParentheses значения, если style он содержит флаг.
Цифр Последовательность цифр от 0 до 9.
, Разделитель групп, зависящий от языка и региональных параметров. Разделитель групп, заданный provider языком и региональными параметрами, может отображаться в value том случае, если style он содержит NumberStyles.AllowThousands флаг.
. Символ десятичной запятой для конкретного языка и региональных параметров. Символ десятичной запятой языка и региональных параметров, указанный в provider нем, может отображаться в value том случае, если style он NumberStyles.AllowDecimalPoint содержит флаг.
fractional_digits Одно или несколько вхождений цифры 0. Дробные цифры могут отображаться только в value том случае, если style он содержит NumberStyles.AllowDecimalPoint флаг.
E Символ e или E, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг.
exponential_digits Последовательность цифр от 0 до 9. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг.
hexdigits Последовательность шестнадцатеричных цифр от 0 до f или 0 до F.

Замечание

Все завершающие символы s NUL (U+0000) игнорируются операцией синтаксического анализа независимо от значения аргумента style .

Не составные NumberStyles значения Элементы, разрешенные в значении в дополнение к цифрам
None Только десятичные цифры.
AllowDecimalPoint Элементы десятичной запятой (.) и fractional_digits. Однако fractional_digits должны состоять только из одного или нескольких 0 цифр или возвращаемого falseметода.
AllowExponent Символ e или E, указывающий экспоненциальную нотацию, а также exponential_digits. Если value представляет число в экспоненциальной нотации, он не может иметь ненулевого, дробного компонента.
AllowLeadingWhite Элемент ws в начале value.
AllowTrailingWhite Элемент ws в конце value.
AllowLeadingSign Элемент sign перед цифрами.
AllowTrailingSign Элемент знака после цифр.
AllowParentheses Элемент sign в виде скобки, включающей числовое значение.
AllowThousands Элемент разделителя групп (,).
AllowCurrencySymbol Элемент валюты ($).
Currency Все элементы. value Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент ws в начале или конце value, знак в начале valueи символ десятичной запятой (.). Параметр value также может использовать экспоненциальную нотацию.
Number Ws, знак, разделитель групп (,), а также элементы десятичной запятой (.).
Any Все элементы. value Однако не может представлять шестнадцатеричное число.

NumberStyles.AllowHexSpecifier Если используется флаг, value должен быть шестнадцатеричным значением. Единственные другие флаги, которые могут присутствовать в styleNumberStyles.AllowLeadingWhite них, и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles имеет составной стиль, HexNumberкоторый включает оба флага пробела.)

Параметр provider является реализацией IFormatProvider . Его GetFormat метод возвращает объект, предоставляющий NumberFormatInfo сведения о формате valueязыка и региональных параметров. Параметр provider может быть одним из следующих вариантов:

  • Объект CultureInfo , представляющий язык и региональные параметры, предоставляющие сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.

  • NumberFormatInfo Объект, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращается.)

  • Настраиваемый объект, реализующий IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.

В provider противном nullNumberFormatInfo случае используется объект для текущего языка и региональных параметров.

См. также раздел

Применяется к

TryParse(ReadOnlySpan<Byte>, BigInteger)

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

Параметры

utf8Text
ReadOnlySpan<Byte>
result
BigInteger

Возвращаемое значение

Применяется к

TryParse(ReadOnlySpan<Char>, BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Пытается преобразовать представление числа, содержащегося в указанном диапазоне символов только для чтения, в его BigInteger эквивалент, и возвращает значение, указывающее, выполнено ли преобразование успешно.

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

Параметры

value
ReadOnlySpan<Char>

Представление числа в виде диапазона символов только для чтения.

result
BigInteger

Когда этот метод возвращается, содержит BigInteger эквивалент числа, содержащегося в value, или ноль (0), если преобразование завершается ошибкой. Преобразование завершается ошибкой, если value параметр является пустым диапазоном символов или не имеет правильного формата. Этот параметр передается неинициализирован.

Возвращаемое значение

true Значение , если value оно было успешно преобразовано; в противном случае false.

См. также раздел

Применяется к

TryParse(String, BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Пытается преобразовать строковое представление числа в его BigInteger эквивалент и возвращает значение, указывающее, выполнено ли преобразование успешно.

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

Параметры

value
String

Строковое представление числа.

result
BigInteger

Когда этот метод возвращается, содержит BigInteger эквивалент числа, содержащегося в value, или ноль (0), если преобразование завершается ошибкой. Преобразование завершается ошибкой, если value параметр имеет null или не соответствует правильному формату. Этот параметр передается неинициализирован.

Возвращаемое значение

true Значение , если value оно было успешно преобразовано; в противном случае false.

Исключения

value равно null.

Примеры

В следующем примере метод используется TryParse(String, BigInteger) для создания экземпляра двух BigInteger объектов. Если преобразования выполнены успешно, он умножает каждый объект на другое число, а затем вызывает Compare метод для определения связи между двумя объектами.

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.
    let mutable number1 = BigInteger.Zero
    let mutable number2 = BigInteger.Zero

    let succeeded1 = BigInteger.TryParse("-12347534159895123", &number1)
    let succeeded2 = BigInteger.TryParse("987654321357159852", &number2)

    if succeeded1 && succeeded2 then
        number1 <- number1 * 3I
        number2 <- number2 * 2I

        match BigInteger.Compare(number1, number2) with
        | -1 -> printfn $"{number2} is greater than {number2}."
        | 0 -> printfn $"{number1} is equal to {number2}."
        | 1
        | _ -> printfn $"{number1} is greater than {number2}."
    else
        if not succeeded1 then
            printfn "Unable to initialize the first BigInteger value."

        if not succeeded2 then
            printfn "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.

Комментарии

Метод TryParse(String, BigInteger) похож Parse(String) на метод, за исключением того, что он не создает исключение, если преобразование завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для FormatExceptionvalue проверки недопустимости и не может быть успешно проанализирована.

Параметр value должен быть строковым представлением десятичного числа в следующей форме:

[ws][знак]цифры[ws]

Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Description
Ws Необязательный пробел.
знак Необязательный знак. Допустимые символы знака определяются и свойствами NumberFormatInfo.NegativeSignNumberFormatInfo.PositiveSign текущего языка и региональных параметров.
Цифр Последовательность десятичных цифр от 0 до 9.

Замечание

Строка, указанная параметром value , не может содержать разделители групп или десятичный разделитель, и она не может иметь десятичную часть.

Параметр value интерпретируется с помощью NumberStyles.Integer стиля. Помимо десятичных цифр разрешены только начальные и конечные пробелы с начальным знаком. Чтобы явно определить элементы стиля с информацией о форматировании, зависящей от языка и региональных параметров, которые могут присутствовать в valueметоде TryParse(String, NumberStyles, IFormatProvider, BigInteger) , вызовите этот метод.

Параметр value анализируется с помощью сведений о форматировании в объекте для текущего NumberFormatInfo языка и региональных параметров. Дополнительные сведения см. в разделе NumberFormatInfo.CurrentInfo.

Эта перегрузка интерпретирует все цифры в параметре value как десятичные цифры. Чтобы проанализировать строковое представление шестнадцатеричного числа, вызовите перегрузку TryParse(String, NumberStyles, IFormatProvider, BigInteger) .

См. также раздел

Применяется к

TryParse(ReadOnlySpan<Byte>, IFormatProvider, BigInteger)

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

Параметры

utf8Text
ReadOnlySpan<Byte>
provider
IFormatProvider
result
BigInteger

Возвращаемое значение

Применяется к

TryParse(String, IFormatProvider, BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Пытается проанализировать строку в значение.

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

Параметры

s
String

Строка для синтаксического анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании, зависящее от sязыка и региональных параметров.

result
BigInteger

При возврате этого метода содержит результат успешного анализа s или неопределенного значения при сбое.

Возвращаемое значение

true Значение , если s был успешно проанализирован; в противном случае false.

Применяется к

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

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, 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<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As BigInteger) As Boolean

Параметры

utf8Text
ReadOnlySpan<Byte>
style
NumberStyles
provider
IFormatProvider
result
BigInteger

Возвращаемое значение

Применяется к

TryParse(String, NumberStyles, IFormatProvider, BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Пытается преобразовать строковое представление числа в указанном стиле и формате языка и региональных параметров в эквивалентный BigInteger формат и возвращает значение, указывающее, успешно ли выполнено преобразование.

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

Параметры

value
String

Строковое представление числа. Строка интерпретируется с помощью стиля, заданного .style

style
NumberStyles

Побитовое сочетание значений перечисления, указывающее элементы стиля, которые могут присутствовать в value. Обычное значение, которое нужно указать Integer.

provider
IFormatProvider

Объект, предоставляющий сведения valueо форматировании с учетом языка и региональных параметров.

result
BigInteger

Когда этот метод возвращается, содержит BigInteger эквивалент числа, содержащегося в value, или Zero , если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если value параметр находится null в формате, который соответствует требованиям style. Этот параметр передается неинициализирован.

Возвращаемое значение

Значение />, если параметр был преобразован успешно; в противном случае .

Исключения

style значение не является значением NumberStyles .

–или–

style AllowHexSpecifier включает или HexNumber флаг вместе с другим значением.

Примеры

В следующем примере выполняются некоторые вызовы TryParse(String, NumberStyles, IFormatProvider, BigInteger) метода с помощью различных сочетаний значений для style параметров и 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.
    // Call TryParse with default values of style and provider.
    let numericString = "  -300   "

    match BigInteger.TryParse(numericString, NumberStyles.Integer, null) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}"
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // Call TryParse with the default value of style and
    // a provider supporting the tilde as negative sign.
    let numericString = "  -300   "

    match BigInteger.TryParse(numericString, NumberStyles.Integer, new BigIntegerFormatProvider()) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}"
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // Call TryParse with only AllowLeadingWhite and AllowTrailingWhite.
    // Method returns false because of presence of negative sign.
    let numericString = "  -500   "

    match
        BigInteger.TryParse(
            numericString,
            NumberStyles.AllowLeadingWhite ||| NumberStyles.AllowTrailingWhite,
            new BigIntegerFormatProvider()
        )
    with
    | true, number -> printfn $"The string '{numericString}' parses to {number}"
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // Call TryParse with AllowHexSpecifier and a hex value.
    let numericString = "F14237FFAAC086455192"

    match BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier, null) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}, or 0x{number:x}."
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // Call TryParse with AllowHexSpecifier and a negative hex value.
    // Conversion fails because of presence of negative sign.
    let numericString = "-3af"

    match BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier, null) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}, or 0x{number:x}."
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // Call TryParse with only NumberStyles.None.
    // Conversion fails because of presence of white space and sign.
    let numericString = " -300 "

    match BigInteger.TryParse(numericString, NumberStyles.None, new BigIntegerFormatProvider()) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}"
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // 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.
    let numericString = "9,031,425,666,123,546.00"

    match BigInteger.TryParse(numericString, NumberStyles.Any, new CultureInfo("fr-FR")) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}"
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

    // 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.
    let numericString = "9 031 425 666 123 546,00"

    match BigInteger.TryParse(numericString, NumberStyles.Any, new CultureInfo("fr-FR")) with
    | true, number -> printfn $"The string '{numericString}' parses to {number}"
    | _ -> printfn $"Conversion of {numericString} to a BigInteger failed."

// 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.

Ряд отдельных вызовов TryParse(String, NumberStyles, IFormatProvider, BigInteger) метода передает экземпляр следующего BigIntegerFormatProvider класса, который определяет тильду (~) как отрицательный знак.

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}
type BigIntegerFormatProvider() =
    interface IFormatProvider with
        member _.GetFormat(formatType: Type) =
            if formatType = typeof<NumberFormatInfo> then
                let numberFormat = new NumberFormatInfo()
                numberFormat.NegativeSign <- "~"
                numberFormat
            else
                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

Комментарии

Метод TryParse(String, NumberStyles, IFormatProvider, BigInteger) похож Parse(String, NumberStyles, IFormatProvider) на метод, за исключением того, что он не создает исключение, если преобразование завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для FormatExceptionvalue проверки недопустимого и не может быть успешно проанализирована.

Параметр style определяет элементы стиля (например, пробелы или положительный или отрицательный знак), которые разрешены в value параметре для успешной операции синтаксического анализа. Это должно быть сочетание битовых флагов из NumberStyles перечисления. В зависимости от значения stylevalue параметр может включать следующие элементы:

[ws][$][знак][цифры,]цифры[.fractional_digits][E[sign]exponential_digits][ws]

Если параметр style включает в себя AllowHexSpecifier, value параметр может включать следующие элементы:

[ws]hexdigits[ws]

Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Description
Ws Необязательный пробел. Пробел может отображаться в начале value , если style он включает NumberStyles.AllowLeadingWhite флаг или в конце value , если style этот флаг включен NumberStyles.AllowTrailingWhite .
$ Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется CurrencyPositivePattern свойством NumberFormatInfo объекта, возвращаемого GetFormat методом provider параметра. Символ валюты может отображаться в value том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг.
знак Необязательный знак. Знак может появиться в начале value , если style он включает NumberStyles.AllowLeadingSign флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingSign флаг. Скобки можно использовать для value указания отрицательного NumberStyles.AllowParentheses значения, если style он содержит флаг.
Цифр Последовательность цифр от 0 до 9.
, Разделитель групп, зависящий от языка и региональных параметров. Разделитель групп, заданный provider языком и региональными параметрами, может отображаться в value том случае, если style он содержит NumberStyles.AllowThousands флаг.
. Символ десятичной запятой для конкретного языка и региональных параметров. Символ десятичной запятой языка и региональных параметров, указанный в provider нем, может отображаться в value том случае, если style он NumberStyles.AllowDecimalPoint содержит флаг.
fractional_digits Одно или несколько вхождений цифры 0. Дробные цифры могут отображаться только в value том случае, если style он содержит NumberStyles.AllowDecimalPoint флаг.
E Символ e или E, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг.
exponential_digits Последовательность цифр от 0 до 9. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг.
hexdigits Последовательность шестнадцатеричных цифр от 0 до f или 0 до F.

Замечание

Все завершающие символы s NUL (U+0000) игнорируются операцией синтаксического анализа независимо от значения аргумента style .

Строка с десятичными цифрами (которая соответствует флагу NumberStyles.None ) всегда анализируется успешно. Большинство остальных NumberStyles элементов управления элементами управления, которые могут присутствовать, но не требуются, в этой входной строке. В следующей таблице показано, как отдельные NumberStyles элементы влияют на элементы, которые могут присутствовать в value.

Не составные NumberStyles значения Элементы, разрешенные в значении в дополнение к цифрам
None Только десятичные цифры.
AllowDecimalPoint Элементы десятичной запятой (.) и fractional_digits. Однако fractional_digits должны состоять только из одного или нескольких 0 цифр или возвращаемого falseметода.
AllowExponent Символ e или E, указывающий экспоненциальную нотацию, а также exponential_digits. Если value представляет число в экспоненциальной нотации, он не может иметь ненулевого, дробного компонента.
AllowLeadingWhite Элемент ws в начале value.
AllowTrailingWhite Элемент ws в конце value.
AllowLeadingSign Элемент sign перед цифрами.
AllowTrailingSign Элемент знака после цифр.
AllowParentheses Элемент sign в виде скобки, включающей числовое значение.
AllowThousands Элемент разделителя групп (,).
AllowCurrencySymbol Элемент валюты ($).
Currency Все элементы. value Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент ws в начале или конце value, знак в начале valueи символ десятичной запятой (.). Параметр value также может использовать экспоненциальную нотацию.
Number Ws, знак, разделитель групп (,), а также элементы десятичной запятой (.).
Any Все элементы. value Однако не может представлять шестнадцатеричное число.

Это важно

Если метод используется TryParse для обхода строкового BigInteger представления значения, выходного ToString методом, следует использовать BigInteger.ToString(String) метод с описателями формата R для создания строкового представления BigInteger значения. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании TryParse метода для восстановления BigInteger значения.

NumberStyles.AllowHexSpecifier Если используется флаг, value должен быть шестнадцатеричным значением. Единственные другие флаги, которые могут присутствовать в styleNumberStyles.AllowLeadingWhite них, и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles имеет составной стиль, HexNumberкоторый включает оба флага пробела.)

Замечание

Если value строковое представление шестнадцатеричного числа, оно не может предшествовать любому украшению (например 0x , или &h) которое отличает его как шестнадцатеричное число. Это приводит к сбою преобразования.

Если value это шестнадцатеричная строка, метод интерпретирует value как отрицательное число, хранящееся с помощью двух дополнительных представлений, TryParse(String, NumberStyles, IFormatProvider, BigInteger) если первые две шестнадцатеричные цифры больше или равно0x80. Другими словами, метод интерпретирует бит первого байта в качестве бита знака.value Чтобы убедиться, что шестнадцатеричная строка правильно интерпретируется как положительное число, первая цифра value должна иметь значение нуля. Например, метод интерпретирует как отрицательное значение, но он интерпретирует 0x80 либо 0x0800x0080 как положительное значение. В следующем примере показано различие между шестнадцатеричными строками, представляющими отрицательные и положительные значения.

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.
open System.Globalization
open System.Numerics

let hexStrings =
    [| "80"
       "E293"
       "F9A2FF"
       "FFFFFFFF"
       "080"
       "0E293"
       "0F9A2FF"
       "0FFFFFFFF"
       "0080"
       "00E293"
       "00F9A2FF"
       "00FFFFFFFF" |]

for hexString in hexStrings do
    match BigInteger.TryParse(hexString, NumberStyles.AllowHexSpecifier, null) with
    | true, number -> printfn $"Converted 0x{hexString} to {number}."
    | _ -> printfn $"Cannot convert '{hexString}' to a BigInteger."

// 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.

Параметр provider является реализацией IFormatProvider . Его GetFormat метод возвращает объект, предоставляющий NumberFormatInfo сведения о формате valueязыка и региональных параметров. Параметр provider может быть одним из следующих вариантов:

  • Объект CultureInfo , представляющий язык и региональные параметры, предоставляющие сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.

  • NumberFormatInfo Объект, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращается.)

  • Настраиваемый объект, реализующий IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.

В provider противном nullNumberFormatInfo случае используется объект для текущего языка и региональных параметров.

См. также раздел

Применяется к

TryParse(ReadOnlySpan<Char>, IFormatProvider, BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Пытается проанализировать диапазон символов в значение.

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

Параметры

s
ReadOnlySpan<Char>

Диапазон символов для синтаксического анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании, зависящее от sязыка и региональных параметров.

result
BigInteger

При возврате этого метода содержит результат успешного анализа sили неопределенное значение при сбое.

Возвращаемое значение

true Значение , если s был успешно проанализирован; в противном случае false.

Применяется к