SByte.TryParse Метод

Определение

Преобразует строковое представление числа в эквивалентное ему 8-битовое целое число со знаком. Возвращает код, позволяющий определить, успешно ли выполнено преобразование.

Перегрузки

TryParse(ReadOnlySpan<Byte>, IFormatProvider, SByte)

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

TryParse(ReadOnlySpan<Char>, SByte)

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

TryParse(String, SByte)

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, SByte)

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

TryParse(String, IFormatProvider, SByte)

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

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

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

TryParse(ReadOnlySpan<Byte>, SByte)

Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа, в эквивалентное 8-битовое целое число со знаком.

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

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

TryParse(String, NumberStyles, IFormatProvider, SByte)

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, SByte)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон символов UTF-8 для анализа.

provider
IFormatProvider

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

result
SByte

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

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

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

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

TryParse(ReadOnlySpan<Char>, SByte)

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

Важно!

Этот API несовместим с CLS.

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

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

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемое число.

result
SByte

По возвращении из этого метода содержит 8-битовое целочисленное значение со знаком, эквивалентное числу, содержащемуся в параметре s, если преобразование выполнено успешно, или ноль, если оно завершилось неудачей. Преобразование завершается ошибкой s , если параметр имеет null значение или Empty, имеет неправильный формат или представляет собой число, которое меньше SByte.MinValue или больше SByte.MaxValue. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result, будет перезаписано.

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

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

Атрибуты

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

TryParse(String, SByte)

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

Важно!

Этот API несовместим с CLS.

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

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::SByte % result);
[System.CLSCompliant(false)]
public static bool TryParse (string s, out sbyte result);
public static bool TryParse (string? s, out sbyte result);
[System.CLSCompliant(false)]
public static bool TryParse (string? s, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : string * sbyte -> bool
static member TryParse : string * sbyte -> bool
Public Shared Function TryParse (s As String, ByRef result As SByte) As Boolean

Параметры

s
String

Строка, содержащая преобразуемое число.

result
SByte

По возвращении из этого метода содержит 8-битовое целочисленное значение со знаком, эквивалентное числу, содержащемуся в параметре s, если преобразование выполнено успешно, или ноль, если оно завершилось неудачей. Преобразование завершается ошибкой s , если параметр имеет null значение или Empty, имеет неправильный формат или представляет собой число, которое меньше SByte.MinValue или больше SByte.MaxValue. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result, будет перезаписано.

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

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

Атрибуты

Примеры

В следующем примере выполняется попытка преобразовать строки в массиве в SByte значения путем вызова TryParse(String, SByte) метода .

string[] numericStrings = {"-3.6", "12.8", "+16.7", "    3   ", "(17)", 
                           "-17", "+12", "18-", "987", "1,024", "  127 "};
sbyte number;
foreach (string numericString in numericStrings)
{
   if (sbyte.TryParse(numericString, out number)) 
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number);
   else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString);
}
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
open System

let numericStrings = 
    [| "-3.6"; "12.8"; "+16.7"; "    3   "; "(17)" 
       "-17"; "+12"; "18-"; "987"; "1,024"; "  127 " |]

for numericString in numericStrings do
    match SByte.TryParse numericString with 
    | true, number ->
        printfn $"Converted '{numericString}' to {number}."
    | _ ->
        printfn $"Cannot convert '{numericString}' to an SByte."
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
Dim numericStrings() As String = {"-3.6", "12.8", "+16.7", "    3   ", _
                                  "(17)", "-17", "+12", "18-", "987", _
                                  "1,024", "  127 "}
Dim number As SByte
For Each numericString As String In numericStrings
   If SByte.TryParse(numericString, number) Then
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number)
   Else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString)
   End If      
Next
' The example displays the following output to the console:
'       Cannot convert '-3.6' to an SByte.
'       Cannot convert '12.8' to an SByte.
'       Cannot convert '+16.7' to an SByte.
'       Converted '    3   ' to 3.
'       Cannot convert '(17)' to an SByte.
'       Converted '-17' to -17.
'       Converted '+12' to 12.
'       Cannot convert '18-' to an SByte.
'       Cannot convert '987' to an SByte.
'       Cannot convert '1,024' to an SByte.
'       Converted '  127 ' to 127.

Комментарии

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

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

[ws] [знак] digits[ws]

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

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

Примечание

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

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

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

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

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

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, SByte)

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

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

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

Параметры

s
ReadOnlySpan<Char>

Диапазон символов для анализа.

provider
IFormatProvider

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

result
SByte

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

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

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

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

TryParse(String, IFormatProvider, SByte)

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

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

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

Параметры

s
String

Строка для анализа.

provider
IFormatProvider

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

result
SByte

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

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

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

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

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

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон символов UTF-8 для анализа.

style
NumberStyles

Побитовое сочетание стилей чисел, которые могут присутствовать в utf8Text.

provider
IFormatProvider

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

result
SByte

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

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

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

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

TryParse(ReadOnlySpan<Byte>, SByte)

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

Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа, в эквивалентное 8-битовое целое число со знаком.

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

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон, содержащий символы UTF-8, представляющие число для преобразования.

result
SByte

При возврате этим методом содержит 8-битовое целое число со знаком, эквивалентное числу, содержамого в utf8Text , если преобразование выполнено успешно, или ноль, если преобразование завершилось неудачно. Этот параметр передается неинициализированным. Любое значение, первоначально предоставленное в результате, будет перезаписано.

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

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

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

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

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

Важно!

Этот API несовместим с CLS.

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

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

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемое число.

style
NumberStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s. Обычно указывается значение Integer.

provider
IFormatProvider

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

result
SByte

При возвращении этим методом содержит 8-битное целочисленное значение со знаком, эквивалентное числу, содержащемуся в параметре s, если преобразование выполнено успешно, или нуль, если оно завершилось неудачей. Преобразование завершается ошибкой s , если параметр имеет значение null или Empty, не соответствует формату style, или представляет собой число меньше SByte.MinValue или больше SByte.MaxValue. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result, будет перезаписано.

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

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

Атрибуты

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

TryParse(String, NumberStyles, IFormatProvider, SByte)

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

Важно!

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Int16.TryParse(String, Int16)

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

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

Параметры

s
String

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

style
NumberStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s. Обычно указывается значение Integer.

provider
IFormatProvider

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

result
SByte

При возвращении этим методом содержит 8-битное целочисленное значение со знаком, эквивалентное числу, содержащемуся в параметре s, если преобразование выполнено успешно, или нуль, если оно завершилось неудачей. Преобразование завершается ошибкой s , если параметр имеет значение null или Empty, не соответствует формату style, или представляет собой число меньше SByte.MinValue или больше SByte.MaxValue. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result, будет перезаписано.

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

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

Атрибуты

Исключения

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

-или-

style не является сочетанием значений AllowHexSpecifier и HexNumber.

Примеры

В следующем примере метод вызывается TryParse(String, NumberStyles, IFormatProvider, SByte) с несколькими различными строками и NumberStyles значениями.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;
      
      numericString = "106";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);
      
      numericString = "-106";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);
      
      numericString = "103.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);
      
      numericString = "103.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 
      
      numericString = "12E-01";
      CallTryParse(numericString, styles);
          
      numericString = "12E01";
      CallTryParse(numericString, styles); 
      
      numericString = "C8";
      CallTryParse(numericString, NumberStyles.HexNumber);
      
      numericString = "0x8C";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }
   
   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      sbyte number;
      bool result = SByte.TryParse(stringToConvert, styles, 
                                   CultureInfo.InvariantCulture, out number);
      if (result)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
open System
open System.Globalization

let callTryParse (stringToConvert: string) styles =
    match SByte.TryParse(stringToConvert, styles, CultureInfo.InvariantCulture) with
    | true, number ->
        printfn $"Converted '{stringToConvert}' to {number}."
    | _ ->
        printfn $"Attempted conversion of '{stringToConvert}' failed."

[<EntryPoint>]
let main _ =
    let numericString = "106"
    let styles = NumberStyles.Integer
    callTryParse numericString styles
    
    let numericString = "-106"
    let styles = NumberStyles.None
    callTryParse numericString styles
    
    let numericString = "103.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles
    
    let numericString = "103.72"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles 
    
    let numericString = "12E-01"
    callTryParse numericString styles
        
    let numericString = "12E01"
    callTryParse numericString styles 
    
    let numericString = "C8"
    callTryParse numericString NumberStyles.HexNumber
    
    let numericString = "0x8C"
    callTryParse numericString NumberStyles.HexNumber
    0

// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "106"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-106"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      numericString = "103.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "103.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "10E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
      
      numericString = "12E-01"
      CallTryParse(numericString, styles)
          
      numericString = "12E01"
      CallTryParse(numericString, styles) 
      
      numericString = "C8"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x8C"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As SByte
      Dim result As Boolean = SByte.TryParse(stringToConvert, styles, _
                                             CultureInfo.InvariantCulture, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
      Else
         Console.WriteLine("Attempted conversion of '{0}' failed.", _
                           Convert.ToString(stringToConvert))
      End If                                                                           
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '106' to 106.
'       Attempted conversion of '-106' failed.
'       Converted '103.00' to 103.
'       Attempted conversion of '103.72' failed.
'       Converted '10E-01' to 1.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E01' to 120.
'       Converted 'C8' to -56.
'       Attempted conversion of '0x8C' failed.

Комментарии

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

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

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

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

[ws] hexdigits[ws]

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

Элемент Описание
ws Необязательный пробел. Пробел может отображаться в начале value , если style включает NumberStyles.AllowLeadingWhite флаг, или в конце value , если style включает NumberStyles.AllowTrailingWhite флаг.
$ Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется свойством CurrencyPositivePattern объекта, NumberFormatInfo возвращаемого GetFormat методом provider параметра . Символ валюты может отображаться в , value если style включает NumberStyles.AllowCurrencySymbol флаг .
sign Необязательный знак. Знак может отображаться в начале value , если style включает NumberStyles.AllowLeadingSign флаг, и в конце value , если style включает NumberStyles.AllowTrailingSign флаг. Круглые скобки можно использовать в value , чтобы указать отрицательное значение, если style включает флаг NumberStyles.AllowParentheses .
digits Последовательность цифр от 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.

Примечание

Все завершающие символы NUL (U+0000) в s игнорируются операцией синтаксического анализа независимо от значения аргумента 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 Элемент знака перед цифрами.
AllowTrailingSign Элемент знака после цифр.
AllowParentheses Элемент sign в виде круглых скобок, включающих числовое значение.
AllowThousands Элемент разделителя групп (,).
AllowCurrencySymbol Элемент currency ($).
Currency Все элементы. value Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент ws в начале или конце value, знак в начале valueи символ десятичной запятой (.). Параметр value также может использовать экспоненциальную нотацию.
Number Элементы ws, знак, разделитель групп (,) и десятичная запятая (.).
Any Все элементы. value Однако не может представлять шестнадцатеричное число.

NumberStyles.AllowHexSpecifier Если используется флаг, value должно быть шестнадцатеричным значением. Допустимые шестнадцатеричные цифры: 0–9, a–f и A–F. Единственными флагами, которые могут присутствовать в style , являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles имеет составной стиль HexNumber, который включает оба флага пробелов.)

Примечание

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

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

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

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

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

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

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

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