Udostępnij za pośrednictwem


Single.TryParse Metoda

Definicja

Konwertuje reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

Przeciążenia

TryParse(String, IFormatProvider, Single)

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

TryParse(ReadOnlySpan<Char>, Single)

Konwertuje reprezentację ciągu liczby w zakresie znaków na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

TryParse(String, Single)

Konwertuje reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)

Próbuje przeanalizować zakres znaków UTF-8 w wartość.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)

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

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

Próbuje przeanalizować zakres znaków UTF-8 w wartość.

TryParse(ReadOnlySpan<Byte>, Single)

Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji.

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

Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

TryParse(String, NumberStyles, IFormatProvider, Single)

Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

Uwagi

W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowała awarię.

TryParse(String, IFormatProvider, Single)

Źródło:
Single.cs
Źródło:
Single.cs
Źródło:
Single.cs

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

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

Parametry

s
String

Ciąg do analizy.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat s.

result
Single

Gdy ta metoda zwraca, zawiera wynik pomyślnego analizowania s lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

true, jeśli s została pomyślnie przeanalizowana; w przeciwnym razie false.

Dotyczy

TryParse(ReadOnlySpan<Char>, Single)

Źródło:
Single.cs
Źródło:
Single.cs
Źródło:
Single.cs

Konwertuje reprezentację ciągu liczby w zakresie znaków na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] float % result);
public static bool TryParse (ReadOnlySpan<char> s, out float result);
static member TryParse : ReadOnlySpan<char> * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Single) As Boolean

Parametry

s
ReadOnlySpan<Char>

>zakres znaków zawierający reprezentację ciągu liczby do przekonwertowania.

result
Single

Gdy ta metoda zwróci wartość , zawiera zmiennoprzecinkową liczbę o pojedynczej precyzji równoważną parametrowi s, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s jest null lub pusty lub nie jest liczbą w prawidłowym formacie. Jeśli s jest prawidłową liczbą mniejszą niż Single.MinValue, result jest NegativeInfinity. Jeśli s jest prawidłową liczbą większą niż Single.MaxValue, result jest PositiveInfinity. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result zostanie zastąpiona.

Zwraca

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

Uwagi

W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowała awarię.

Dotyczy

TryParse(String, Single)

Źródło:
Single.cs
Źródło:
Single.cs
Źródło:
Single.cs

Konwertuje reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

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

Parametry

s
String

Ciąg reprezentujący liczbę do przekonwertowania.

result
Single

Gdy ta metoda zwróci wartość zmiennoprzecinkową o pojedynczej precyzji, odpowiada wartości liczbowej lub symbolowi zawartemu w s, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s jest null lub Empty lub nie jest liczbą w prawidłowym formacie. Nie powiedzie się również w programach .NET Framework i .NET Core 2.2 i starszych wersjach, jeśli s reprezentuje liczbę mniejszą niż Single.MinValue lub nowszą niż single.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result zostanie zastąpiona.

Zwraca

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

Przykłady

W poniższym przykładzie użyto metody TryParse(String, Single), aby przekonwertować reprezentacje ciągów wartości liczbowych na Single wartości. Przyjęto założenie, że en-US jest bieżącą kulturą.

string value;
float number;

// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse a floating-point value with a currency symbol and a
// thousands separator.
value = "$1,643.57";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse value in exponential notation.
value = "-1.643e6";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);

// Parse a negative integer value.
value = "-168934617882109132";
if (Single.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output:
//       1643.57
//       Unable to parse '$1,643.57'.
//       -164300
//       -1.689346E+17
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Single.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."

// Parse a floating-point value with a currency symbol and a
// thousands separator.
let value = "$1,643.57"
match Single.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."

// Parse value in exponential notation.
let value = "-1.643e6"
match Single.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."

// Parse a negative integer value.
let value = "-168934617882109132"
match Single.TryParse value with
| true, number ->
    printfn $"{number}"
| _ ->
    printfn $"Unable to parse '{value}'."
// The example displays the following output:
//       1643.57
//       Unable to parse '$1,643.57'.
//       -164300
//       -1.689346E+17
Dim value As String
Dim number As Single

' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Single.TryParse(value, number) Then
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)
End If

' Parse a floating-point value with a currency symbol and a
' thousands separator.
value = "$1,643.57"
If Single.TryParse(value, number) Then
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)
End If

' Parse value in exponential notation.
value = "-1.643e6"
If Single.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)
End If

' Parse a negative integer number.
value = "-168934617882109132"
If Single.TryParse(value, number)
   Console.WriteLine(number)
Else
   Console.WriteLine("Unable to parse '{0}'.", value)
End If
' The example displays the following output:
'       1643.57
'       Unable to parse '$1,643.57'.
'       -1643000
'       -1.689346E+17

Uwagi

W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowała awarię.

To przeciążenie różni się od metody Single.Parse(String) przez zwrócenie wartości logicznej, która wskazuje, czy operacja analizowania zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość liczbową. Eliminuje to konieczność użycia obsługi wyjątków w celu przetestowania FormatException w przypadku, gdy s jest nieprawidłowa i nie można jej pomyślnie przeanalizować.

Parametr s może zawierać PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol (porównanie ciągów jest uwzględniane wielkość liter) lub ciąg formularza:

[ws] [podpis] [cyfry całkowite,]cyfry-całkowite[.[ fractional-digits]][e[sign]exponential-digits][ws]

Elementy w nawiasach kwadratowych są opcjonalne. W poniższej tabeli opisano każdy element.

Pierwiastek Opis
ws Seria znaków odstępów.
podpisywania Znak ujemny lub symbol znaku dodatniego.
cyfry całkowite Seria znaków liczbowych z zakresu od 0 do 9, która określa integralną część liczby. Cyfry całkowite mogą być nieobecne, jeśli istnieją cyfry ułamkowe.
, Symbol separatora grup specyficznych dla kultury.
. Symbol separatora dziesiętnego specyficznego dla kultury.
cyfry ułamkowe Seria znaków liczbowych z zakresu od 0 do 9, która określa część ułamkową liczby.
E Wielkie lub małe litery znak "e", który wskazuje notację wykładniczą (naukową).
cyfry wykładnicze Seria znaków liczbowych z zakresu od 0 do 9, która określa wykładnik.

Parametr s jest interpretowany przy użyciu kombinacji flag NumberStyles.Float i NumberStyles.AllowThousands. Oznacza to, że odstępy i tysiące separatorów są dozwolone, ale symbole waluty nie są. Aby jawnie zdefiniować elementy (takie jak symbole waluty, separatory tysięcy i odstępy), które mogą być obecne w s, użyj przeciążenia metody TryParse(String, NumberStyles, IFormatProvider, Single).

Parametr s jest analizowany przy użyciu informacji o formatowaniu w obiekcie NumberFormatInfo zainicjowanym dla bieżącej kultury systemu. Aby uzyskać więcej informacji, zobacz NumberFormatInfo.CurrentInfo. Aby przeanalizować ciąg przy użyciu informacji o formatowaniu innej określonej kultury, użyj przeciążenia metody TryParse(String, NumberStyles, IFormatProvider, Single).

Zazwyczaj jeśli przekażesz metodę Single.TryParse ciąg utworzony przez wywołanie metody Single.ToString, zwracana jest oryginalna wartość Single. Jednak ze względu na utratę dokładności wartości mogą nie być równe.

Jeśli s jest poza zakresem typu danych Single, metoda zwraca false w programach .NET Framework i .NET Core 2.2 i starszych wersjach. W programie .NET Core 3.0 lub nowszym zwraca Single.NegativeInfinity, jeśli s jest mniejsza niż Single.MinValue i Single.PositiveInfinity, jeśli s jest większa niż Single.MaxValue.

Jeśli separator napotkany w parametrze s podczas operacji analizy, a odpowiednia waluta lub separatory liczbowe i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grup. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.

Zobacz też

Dotyczy

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Single)

Źródło:
Single.cs
Źródło:
Single.cs

Próbuje przeanalizować zakres znaków UTF-8 w wartość.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 do przeanalizowania.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text.

result
Single

Po powrocie zawiera wynik pomyślnego analizowania utf8Text lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

true, jeśli utf8Text została pomyślnie przeanalizowana; w przeciwnym razie false.

Dotyczy

TryParse(ReadOnlySpan<Char>, IFormatProvider, Single)

Źródło:
Single.cs
Źródło:
Single.cs
Źródło:
Single.cs

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

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

Parametry

s
ReadOnlySpan<Char>

Zakres znaków do przeanalizowania.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat s.

result
Single

Gdy ta metoda zwraca wartość , zawiera wynik pomyślnego analizowania slub niezdefiniowanej wartości w przypadku błędu.

Zwraca

true, jeśli s została pomyślnie przeanalizowana; w przeciwnym razie false.

Dotyczy

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

Źródło:
Single.cs
Źródło:
Single.cs

Próbuje przeanalizować zakres znaków UTF-8 w wartość.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 do przeanalizowania.

style
NumberStyles

Bitowa kombinacja stylów liczbowych, które mogą być obecne w utf8Text.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text.

result
Single

Po powrocie zawiera wynik pomyślnego analizowania utf8Text lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

true, jeśli utf8Text została pomyślnie przeanalizowana; w przeciwnym razie false.

Dotyczy

TryParse(ReadOnlySpan<Byte>, Single)

Źródło:
Single.cs
Źródło:
Single.cs

Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na równoważnik liczby zmiennoprzecinkowych o pojedynczej precyzji.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 tylko do odczytu, który zawiera liczbę do przekonwertowania.

result
Single

Gdy ta metoda zwraca wartość zmiennoprzecinkową o pojedynczej precyzji, odpowiada wartości liczbowej lub symbolowi zawartemu w utf8Text, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli utf8Text jest Empty lub nie jest w prawidłowym formacie. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w wyniku zostanie zastąpiona.

Zwraca

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

Dotyczy

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

Źródło:
Single.cs
Źródło:
Single.cs
Źródło:
Single.cs

Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

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

Parametry

s
ReadOnlySpan<Char>

Zakres znaków tylko do odczytu zawierający liczbę do konwersji. Zakres jest interpretowany przy użyciu stylu określonego przez style.

style
NumberStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format s. Typowa wartość do określenia jest Float połączona z AllowThousands.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s.

result
Single

Gdy ta metoda zwraca, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolowi zawartej w s, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s jest null lub Empty, nie jest w formacie zgodnym z style, reprezentuje liczbę mniejszą niż Single.MinValue lub większą niż Single.MaxValuelub jeśli style nie jest prawidłową kombinacją NumberStyles wyliczonych stałych. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result zostanie zastąpiona.

Zwraca

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

Uwagi

W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowała awarię.

Dotyczy

TryParse(String, NumberStyles, IFormatProvider, Single)

Źródło:
Single.cs
Źródło:
Single.cs
Źródło:
Single.cs

Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczb zmiennoprzecinkowych o pojedynczej precyzji. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.

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

Parametry

s
String

Ciąg reprezentujący liczbę do przekonwertowania.

style
NumberStyles

Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format s. Typowa wartość do określenia jest Float połączona z AllowThousands.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s.

result
Single

Gdy ta metoda zwraca, zawiera liczbę zmiennoprzecinkową o pojedynczej precyzji równoważną wartości liczbowej lub symbolowi zawartej w s, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja nie powiedzie się, jeśli parametr s jest null lub Empty, nie jest w formacie zgodnym z stylelub jeśli style nie jest prawidłową kombinacją stałych wyliczenia NumberStyles. Nie powiedzie się również w programie .NET Framework lub .NET Core 2.2 i starszych wersjach, jeśli s reprezentuje liczbę mniejszą niż Single.MinValue lub większą niż Single.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result zostanie zastąpiona.

Zwraca

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

Wyjątki

style nie jest wartością NumberStyles.

-lub-

style jest wartością AllowHexSpecifier.

Przykłady

W poniższym przykładzie pokazano użycie metody Single.TryParse(String, NumberStyles, IFormatProvider, Single) do analizowania reprezentacji ciągów liczb, które mają określony styl i są formatowane przy użyciu konwencji określonej kultury.

string value;
System.Globalization.NumberStyles style;
System.Globalization.CultureInfo culture;
float number;

// Parse currency value using en-GB culture.
value = "£1,097.63";
style = System.Globalization.NumberStyles.Number |
        System.Globalization.NumberStyles.AllowCurrencySymbol;
culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");
if (Single.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);

value = "1345,978";
style = System.Globalization.NumberStyles.AllowDecimalPoint;
culture = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR");
if (Single.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);

value = "1.345,978";
style = System.Globalization.NumberStyles.AllowDecimalPoint |
        System.Globalization.NumberStyles.AllowThousands;
culture = System.Globalization.CultureInfo.CreateSpecificCulture("es-ES");
if (Single.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);

value = "1 345,978";
if (Single.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
// The example displays the following output:
//       Converted '£1,097.63' to 1097.63.
//       Converted '1345,978' to 1345.978.
//       Converted '1.345,978' to 1345.978.
//       Unable to convert '1 345,978'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = System.Globalization.NumberStyles.Number ||| System.Globalization.NumberStyles.AllowCurrencySymbol
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "en-GB"
match Single.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."

let value = "1345,978"
let style = System.Globalization.NumberStyles.AllowDecimalPoint
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "fr-FR"
match Single.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."

let value = "1.345,978"
let style = System.Globalization.NumberStyles.AllowDecimalPoint ||| System.Globalization.NumberStyles.AllowThousands
let culture = System.Globalization.CultureInfo.CreateSpecificCulture "es-ES"
match Single.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."

let value = "1 345,978"
match Single.TryParse(value, style, culture) with
| true, number ->
    printfn $"Converted '{value}' to {number}."
| _ ->
    printfn $"Unable to convert '{value}'."
// The example displays the following output:
//       Converted '£1,097.63' to 1097.63.
//       Converted '1345,978' to 1345.978.
//       Converted '1.345,978' to 1345.978.
//       Unable to convert '1 345,978'.
Dim value As String
Dim style As System.Globalization.NumberStyles
Dim culture As System.Globalization.CultureInfo
Dim number As Single

' Parse currency value using en-GB culture.
value = "£1,097.63"
style = System.Globalization.NumberStyles.Number Or _
        System.Globalization.NumberStyles.AllowCurrencySymbol
culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB")
If Single.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If

value = "1345,978"
style = System.Globalization.NumberStyles.AllowDecimalPoint
culture = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")
If Single.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If

value = "1.345,978"
style = System.Globalization.NumberStyles.AllowDecimalPoint Or _
        System.Globalization.NumberStyles.AllowThousands
culture = System.Globalization.CultureInfo.CreateSpecificCulture("es-ES")
If Single.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If

value = "1 345,978"
If Single.TryParse(value, style, culture, number) Then
   Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
   Console.WriteLine("Unable to convert '{0}'.", value)
End If
' The example displays the following output:
'       Converted '£1,097.63' to 1097.63.
'       Converted '1345,978' to 1345.978.
'       Converted '1.345,978' to 1345.978.
'       Unable to convert '1 345,978'.

Uwagi

W programie .NET Core 3.0 lub nowszym wartości, które są zbyt duże do reprezentowania, są zaokrąglane do PositiveInfinity lub NegativeInfinity zgodnie ze specyfikacją IEEE 754. W poprzednich wersjach, w tym .NET Framework, analizowanie wartości, która była zbyt duża, aby reprezentować, spowodowała awarię.

To przeciążenie różni się od metody Parse(String, NumberStyles, IFormatProvider) przez zwrócenie wartości logicznej, która wskazuje, czy operacja analizowania zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość liczbową. Eliminuje to konieczność użycia obsługi wyjątków w celu przetestowania FormatException w przypadku, gdy s jest nieprawidłowa i nie można jej pomyślnie przeanalizować.

Parametr style definiuje dozwolony format parametru s, aby operacja analizy zakończyła się pomyślnie. Musi to być kombinacja flag bitowych z wyliczenia NumberStyles. Następujące NumberStyles członków nie są obsługiwane:

Parametr s może zawierać PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol dla kultury wskazanej przez provider. Ponadto w zależności od wartości styleparametr s może zawierać następujące elementy:

[ws] [$] [podpis] [cyfry całkowite,]cyfry-całkowitoliczkowe[.ułamkowe cyfry][e[znak]cyfry wykładnicze][ws]

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

Pierwiastek Opis
ws Opcjonalne białe znaki. Białe znaki mogą pojawić się na początku s, jeśli style zawiera flagę NumberStyles.AllowLeadingWhite. Może pojawić się na końcu s, jeśli style zawiera flagę NumberStyles.AllowTrailingWhite.
$ Symbol waluty specyficznej dla kultury. Jego pozycja w ciągu jest definiowana przez właściwości NumberFormatInfo.CurrencyNegativePattern lub NumberFormatInfo.CurrencyPositivePattern obiektu NumberFormatInfo zwrócone przez metodę IFormatProvider.GetFormat parametru provider. Symbol waluty może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol.
podpisywania Opcjonalny znak. Znak może pojawić się na początku s, jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu s, jeśli style zawiera flagę NumberStyles.AllowTrailingSign. Nawiasy mogą być używane w s, aby wskazać wartość ujemną, jeśli style zawiera flagę NumberStyles.AllowParentheses.
cyfry całkowite Seria cyfr z zakresu od 0 do 9, która określa integralną część liczby. Cyfry całkowite mogą być nieobecne, jeśli istnieją cyfry ułamkowe.
, Symbol separatora tysięcy specyficzny dla kultury. Symbol separatora tysięcy bieżącej kultury może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowThousands.
. Symbol separatora dziesiętnego specyficznego dla kultury. Symbol punktu dziesiętnego bieżącej kultury może pojawić się w s, jeśli style zawiera flagę NumberStyles.AllowDecimalPoint.
cyfry ułamkowe Seria cyfr od 0 do 9 określająca część ułamkową liczby. Cyfry ułamkowe mogą być wyświetlane w s, jeśli style zawiera flagę NumberStyles.AllowDecimalPoint.
e Znak e lub E, który wskazuje, że s może reprezentować liczbę przy użyciu notacji wykładniczej. Parametr s może reprezentować liczbę w notacji wykładniczej, jeśli styl zawiera flagę NumberStyles.AllowExponent.
cyfry wykładnicze Seria cyfr z zakresu od 0 do 9, która określa wykładnik.

Nuta

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

Ciąg zawierający tylko cyfry (który odpowiada stylowi NumberStyles.None) zawsze analizuje się pomyślnie, jeśli znajduje się w zakresie typu Single. Pozostałe elementy członkowskie System.Globalization.NumberStyles, które mogą być, ale nie muszą być obecne w ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne flagi NumberStyles wpływają na elementy, które mogą być obecne w s.

Wartość NumberStyles Elementy dozwolone w s oprócz cyfr
None cyfry całkowite tylko element.
AllowDecimalPoint . i cyfry ułamkowe elementów.
AllowExponent Parametr s może również używać notacji wykładniczej. Ta flaga sama obsługuje wartości w postaci cyfr całkowitychEcyfr wykładniczych; Dodatkowe flagi są potrzebne do pomyślnego analizowania ciągów w notacji wykładniczej z takimi elementami jak znaki dodatnie lub ujemne i symbole punktów dziesiętnych.
AllowLeadingWhite Element ws na początku s.
AllowTrailingWhite Element ws na końcu s.
AllowLeadingSign Element podpisywania na początku .
AllowTrailingSign Element na końcu s.
AllowParentheses Znak element w postaci nawiasów otaczających wartość liczbową.
AllowThousands Element ,.
AllowCurrencySymbol Element $.
Currency Cały. Parametr s nie może reprezentować liczby szesnastkowej lub liczby w notacji wykładniczej.
Float Element ws na początku lub na końcu sznak na początku si . symbol. Parametr s może również używać notacji wykładniczej.
Number Elementy separatora ws, sign, tysięcy (), i dziesiętnego (.).
Any Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej.

Parametr provider jest implementacją IFormatProvider, której metoda GetFormat zwraca obiekt NumberFormatInfo, który zapewnia informacje o formatowaniu specyficznym dla kultury. Po wywołaniu metody TryParse(String, NumberStyles, IFormatProvider, Single) wywołuje metodę GetFormat parametru provider i przekazuje do niego obiekt Type reprezentujący typ NumberFormatInfo. Następnie metoda GetFormat zwraca obiekt NumberFormatInfo zawierający informacje o formacie parametru s. Istnieją trzy sposoby użycia parametru provider do podawania niestandardowych informacji formatowania do operacji analizowania:

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

  • Można przekazać rzeczywisty obiekt NumberFormatInfo, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat po prostu zwraca się.

  • Można przekazać obiekt niestandardowy, który implementuje IFormatProvider. Metoda GetFormat tworzy wystąpienie i zwraca obiekt NumberFormatInfo, który udostępnia informacje o formatowaniu.

Jeśli provider jest null, formatowanie s jest interpretowane na podstawie obiektu NumberFormatInfo bieżącej kultury.

Jeśli s jest poza zakresem typu danych Single, metoda zgłasza OverflowException w programach .NET Framework i .NET Core 2.2 i starszych wersjach. W programie .NET Core 3.0 lub nowszym zwraca Single.NegativeInfinity, jeśli s jest mniejsza niż Single.MinValue i Single.PositiveInfinity, jeśli s jest większa niż Single.MaxValue.

Jeśli separator napotkany w parametrze s podczas operacji analizy, a odpowiednia waluta lub separatory liczbowe i separatory grup są takie same, operacja analizy zakłada, że separator jest separatorem dziesiętnym, a nie separatorem grup. Aby uzyskać więcej informacji na temat separatorów, zobacz CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatori NumberGroupSeparator.

Zobacz też

Dotyczy