Int64.TryParse Yöntem

Tanım

Bir sayının dize gösterimini 64 bit imzalı tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

Aşırı Yüklemeler

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int64)

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

TryParse(ReadOnlySpan<Char>, Int64)

Bir sayının span gösterimini 64 bit işaretli tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(String, Int64)

Bir sayının dize gösterimini 64 bit işaretli tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int64)

Bir karakter aralığını bir değere ayrıştırmaya çalışır.

TryParse(String, IFormatProvider, Int64)

Bir dizeyi bir değere ayrıştırmaya çalışır.

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

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

TryParse(ReadOnlySpan<Byte>, Int64)

Bir sayının dize gösterimini içeren UTF-8 karakter aralığını 64 bit işaretli tamsayı eşdeğerine dönüştürmeye çalışır.

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

Bir sayının belirtilen stilde ve kültüre özgü biçimdeki span gösterimini 64 bit işaretli tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(String, NumberStyles, IFormatProvider, Int64)

Belirtilen stilde ve kültüre özgü biçimdeki bir sayının dize gösterimini 64 bit işaretli tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

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

Parametreler

utf8Text
ReadOnlySpan<Byte>

Ayrıştırılacak UTF-8 karakter aralığı.

provider
IFormatProvider

hakkında utf8Textkültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Int64

Sonuç olarak, başarıyla ayrıştırma utf8Text işleminin sonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa utf8Text ; aksi takdirde , false.

Şunlara uygulanır

TryParse(ReadOnlySpan<Char>, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs
Kaynak:
Int64.cs

Bir sayının span gösterimini 64 bit işaretli tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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

Parametreler

s
ReadOnlySpan<Char>

Dönüştürülecek sayıyı temsil eden karakterleri içeren bir yayılma alanı.

result
Int64

Bu yöntem döndürdüğünde, içinde yer salan sayının 64 bit işaretli tamsayı değerini, dönüştürme başarılı olursa değerini veya dönüştürme başarısız olursa sıfır değerini içerir. veya parametresi nullEmptydoğru biçimde değilse s veya Int64.MinValue değerinden küçük veya Int64.MaxValue değerinden büyük bir sayıyı temsil ederse dönüştürme başarısız olur. Bu parametre başlatılmadan geçirilir; başlangıçta verilen result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Şunlara uygulanır

TryParse(String, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs
Kaynak:
Int64.cs

Bir sayının dize gösterimini 64 bit işaretli tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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

Parametreler

s
String

Dönüştürülecek sayıyı içeren bir dize.

result
Int64

Bu yöntem döndürdüğünde, içinde yer salan sayının 64 bit işaretli tamsayı değerini, dönüştürme başarılı olursa değerini veya dönüştürme başarısız olursa sıfır değerini içerir. veya parametresi nullEmptydoğru biçimde değilse s veya Int64.MinValue değerinden küçük veya Int64.MaxValue değerinden büyük bir sayıyı temsil ederse dönüştürme başarısız olur. Bu parametre başlatılmadan geçirilir; başlangıçta verilen result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Örnekler

Aşağıdaki örnek, yöntemini bir dizi farklı dize değeriyle çağırır Int64.TryParse(String, Int64) .

using System;

public class StringParsing
{
   public static void Main()
   {
      TryToParse(null);
      TryToParse("160519");
      TryToParse("9432.0");
      TryToParse("16,667");
      TryToParse("   -322   ");
      TryToParse("+4302");
      TryToParse("(100);");
      TryToParse("01FA");
   }

   private static void TryToParse(string value)
   {
      bool success = Int64.TryParse(value, out long number);
      if (success)
      {
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
      }
      else
      {
         if (value == null) value = "";
         Console.WriteLine("Attempted conversion of '{0}' failed.", value);
      }
   }
}
// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '160519' to 160519.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100);' failed.
//       Attempted conversion of '01FA' failed.
open System

let tryToParse (value: string) =
    match Int64.TryParse value with
    | true, number ->
        printfn $"Converted '{value}' to {number}."
    | _ ->
        let value =
            if isNull value then 
                ""
            else
                value
        printfn $"Attempted conversion of '{value}' failed."

tryToParse null
tryToParse "160519"
tryToParse "9432.0"
tryToParse "16,667"
tryToParse "   -322   "
tryToParse "+4302"
tryToParse "(100);"
tryToParse "01FA"


// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '160519' to 160519.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100);' failed.
//       Attempted conversion of '01FA' failed.
Module StringParsing
   Public Sub Main()
      TryToParse(Nothing)
      TryToParse("160519")
      TryToParse("9432.0")
      TryToParse("16,667")
      TryToParse("   -322   ")
      TryToParse("+4302")
      TryToParse("(100)")
      TryToParse("01FA")
   End Sub
   
   Private Sub TryToParse(value As String)
      Dim number As Long
      Dim result As Boolean = Int64.TryParse(value, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", value, number)
      Else
         If value Is Nothing Then value = "" 
         Console.WriteLine("Attempted conversion of '{0}' failed.", value)
      End If     
   End Sub
End Module
' The example displays the following output to the console:
'       Attempted conversion of '' failed.
'       Converted '160519' to 160519.
'       Attempted conversion of '9432.0' failed.
'       Attempted conversion of '16,667' failed.
'       Converted '   -322   ' to -322.
'       Converted '+4302' to 4302.
'       Attempted conversion of '(100)' failed.
'       Attempted conversion of '01FA' failed.

Bu örnekte yönteminin TryParse(String, Int64) dönüştüremediği dizelerden bazıları şunlardır:

  • "9432.0". Dize ondalık ayırıcı içeremediğinden dönüştürme başarısız olur; yalnızca tam sayı basamakları içermelidir.

  • "16,667". Dize grup ayırıcıları içeremediğinden dönüştürme başarısız olur; yalnızca tam sayı basamakları içermelidir.

  • "(100)". Dize, geçerli kültürün NumberFormatInfo.NegativeSign ve NumberFormatInfo.NumberNegativePattern özellikleri tarafından tanımlanandan farklı bir negatif işaret içeremediğinden dönüştürme başarısız olur.

  • "01FA". Dize onaltılık basamak içeremediğinden dönüştürme başarısız olur; yalnızca ondalık basamak içermelidir.

Açıklamalar

TryParse yöntemi yöntemine Parse benzer, ancak TryParse dönüştürme başarısız olursa yöntemi özel durum oluşturmaz. Geçersiz olan ve başarıyla ayrıştırılamayan bir durumunda s test etmek için FormatException özel durum işleme kullanma gereksinimini ortadan kaldırır.

s parametresi formun bir sayısını içerir:

[ws][sign]digits[ws]

Köşeli ayraçlar ([ve]) içindeki öğeler isteğe bağlıdır. Aşağıdaki tablo her öğeyi açıklar.

Öğe Açıklama
Ws İsteğe bağlı bir boşluk.
sign İsteğe bağlı bir işaret.
Basamak 0 İle 9 arasında değişen bir basamak dizisi.

s parametresi, stil kullanılarak NumberStyles.Integer yorumlanır. Ondalık basamaklara ek olarak, yalnızca baştaki ve sondaki boşluklara ve baştaki işaretine izin verilir. stil öğelerini içinde bulunabilecek skültüre özgü biçimlendirme bilgileriyle birlikte açıkça tanımlamak için yöntemini kullanın TryParse(String, NumberStyles, IFormatProvider, Int64) .

s parametresi, geçerli sistem kültürü için başlatılan bir NumberFormatInfo nesnedeki biçimlendirme bilgileri kullanılarak ayrıştırılır. Daha fazla bilgi için bkz. CurrentInfo.

Yönteminin TryParse bu aşırı yüklemesi, parametredeki s tüm basamakları ondalık basamaklar olarak yorumlar. Onaltılık bir sayının dize gösterimini ayrıştırmak için aşırı yüklemeyi çağırın TryParse(String, NumberStyles, IFormatProvider, Int64) .

Ayrıca bkz.

Şunlara uygulanır

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs
Kaynak:
Int64.cs

Bir karakter aralığını bir değere ayrıştırmaya çalışır.

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

Parametreler

s
ReadOnlySpan<Char>

Ayrıştırılacak karakterlerin yayılması.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Int64

Bu yöntem döndürdüğünde, başarıyla ayrıştırma ssonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa s ; aksi takdirde , false.

Şunlara uygulanır

TryParse(String, IFormatProvider, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs
Kaynak:
Int64.cs

Bir dizeyi bir değere ayrıştırmaya çalışır.

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

Parametreler

s
String

Ayrıştıracak dize.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Int64

Bu yöntem döndürdüğünde, başarıyla ayrıştırma s işleminin sonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa s ; aksi takdirde , false.

Şunlara uygulanır

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

Kaynak:
Int64.cs
Kaynak:
Int64.cs

UTF-8 karakterlik bir aralığı bir değere ayrıştırmaya çalışır.

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

Parametreler

utf8Text
ReadOnlySpan<Byte>

Ayrıştırılacak UTF-8 karakter aralığı.

style
NumberStyles

içinde utf8Textbulunabilecek sayı stillerinin bit düzeyinde birleşimi.

provider
IFormatProvider

hakkında utf8Textkültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Int64

Sonuç olarak, başarıyla ayrıştırma utf8Text işleminin sonucunu veya hata durumunda tanımlanmamış bir değeri içerir.

Döndürülenler

true başarıyla ayrıştırıldıysa utf8Text ; aksi takdirde , false.

Şunlara uygulanır

TryParse(ReadOnlySpan<Byte>, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs

Bir sayının dize gösterimini içeren UTF-8 karakter aralığını 64 bit imzalı tamsayı eşdeğerine dönüştürmeyi dener.

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

Parametreler

utf8Text
ReadOnlySpan<Byte>

Dönüştürülecek sayıyı temsil eden UTF-8 karakterlerini içeren bir yayılma alanı.

result
Int64

Bu yöntem döndürdüğünde, dönüştürme başarılı olursa içinde bulunan sayıya eşdeğer 64 bit imzalı utf8Text tamsayı değerini veya dönüştürme başarısız olursa sıfırı içerir. Bu parametre başlatılmadan geçirilir; başlangıçta sonuçta sağlanan tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse utf8Text ; aksi takdirde , false.

Şunlara uygulanır

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

Kaynak:
Int64.cs
Kaynak:
Int64.cs
Kaynak:
Int64.cs

Bir sayının belirtilen stil ve kültüre özgü biçimdeki span gösterimini 64 bit imzalı tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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

Parametreler

s
ReadOnlySpan<Char>

Dönüştürülecek sayıyı temsil eden karakterleri içeren bir yayılma alanı. Span, tarafından stylebelirtilen stil kullanılarak yorumlanır.

style
NumberStyles

içinde bulunabilecek sstil öğelerini gösteren sabit listesi değerlerinin bit düzeyinde birleşimi. Belirtilmesi gereken tipik bir değerdir Integer.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Int64

Bu yöntem döndürdüğünde, içinde bulunan ssayının eşdeğeri olan 64 bit imzalı tamsayı değerini, dönüştürme başarılı olursa değerini veya dönüştürme başarısız olursa sıfırı içerir. parametre null veya Emptyile uyumlu stylebir biçimde değilse veya Int64.MinValue değerinden küçük veya Int64.MaxValue değerinden büyük bir sayıyı temsil ederse dönüştürme başarısız olur.s Bu parametre başlatılmadan geçirilir; başlangıçta sağlanan result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Şunlara uygulanır

TryParse(String, NumberStyles, IFormatProvider, Int64)

Kaynak:
Int64.cs
Kaynak:
Int64.cs
Kaynak:
Int64.cs

Belirtilen stilde ve kültüre özgü biçimdeki bir sayının dize gösterimini 64 bit imzalı tamsayı eşdeğerine dönüştürür. Dönüştürmenin başarılı veya başarısız olduğunu gösteren dönüş değeri.

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

Parametreler

s
String

Dönüştürülecek sayıyı içeren bir dize. Dize, tarafından stylebelirtilen stil kullanılarak yorumlanır.

style
NumberStyles

içinde bulunabilecek sstil öğelerini gösteren sabit listesi değerlerinin bit düzeyinde birleşimi. Belirtilmesi gereken tipik bir değerdir Integer.

provider
IFormatProvider

hakkında skültüre özgü biçimlendirme bilgileri sağlayan bir nesne.

result
Int64

Bu yöntem döndürdüğünde, içinde bulunan ssayının eşdeğeri olan 64 bit imzalı tamsayı değerini, dönüştürme başarılı olursa değerini veya dönüştürme başarısız olursa sıfırı içerir. parametre null veya Emptyile uyumlu stylebir biçimde değilse veya Int64.MinValue değerinden küçük veya Int64.MaxValue değerinden büyük bir sayıyı temsil ederse dönüştürme başarısız olur.s Bu parametre başlatılmadan geçirilir; başlangıçta sağlanan result tüm değerlerin üzerine yazılır.

Döndürülenler

true başarıyla dönüştürüldüyse s ; aksi takdirde , false.

Özel durumlar

style bir NumberStyles değer değildir.

-veya-

styleve HexNumber değerlerinin AllowHexSpecifier birleşimi değildir.

Örnekler

Aşağıdaki örnek, yöntemini bir dizi farklı dize ve NumberStyles değerle çağırırTryParse(String, NumberStyles, IFormatProvider, Int64).

using System;
using System.Globalization;

public class StringParsing
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;

      numericString = "106779";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      numericString = "-30677";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);

      styles = NumberStyles.AllowLeadingSign;
      CallTryParse(numericString, styles);

      numericString = "301677-";
      CallTryParse(numericString, styles);

      styles = styles | NumberStyles.AllowTrailingSign;
      CallTryParse(numericString, styles);

      numericString = "$10634";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      styles = NumberStyles.Integer | NumberStyles.AllowCurrencySymbol;
      CallTryParse(numericString, styles);

      numericString = "10345.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "22,593";
      styles = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallTryParse(numericString, styles);

      numericString = "12E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles);

      numericString = "12E03";
      CallTryParse(numericString, styles);

      numericString = "80c1";
      CallTryParse(numericString, NumberStyles.HexNumber);

      numericString = "0x80C1";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }

   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      CultureInfo provider;

      // If currency symbol is allowed, use en-US culture.
      if ((styles & NumberStyles.AllowCurrencySymbol) > 0)
         provider = new CultureInfo("en-US");
      else
         provider = CultureInfo.InvariantCulture;

      bool success = Int64.TryParse(stringToConvert, styles,
                                   provider, out long number);
      if (success)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.
open System
open System.Globalization

let callTryParse (stringToConvert: string) styles =
    let provider =
        // If currency symbol is allowed, use en-US culture.
        if int (styles &&& NumberStyles.AllowCurrencySymbol) > 0 then
            CultureInfo "en-US"
        else
            CultureInfo.InvariantCulture

    match Int64.TryParse(stringToConvert, styles, provider) with
    | true, number ->
        printfn $"Converted '{stringToConvert}' to {number}."
    | _ ->
        printfn $"Attempted conversion of '{stringToConvert}' failed."


[<EntryPoint>]
let main _ =
    let numericString = "106779"
    let styles = NumberStyles.Integer
    callTryParse numericString styles

    let numericString = "-30677"
    let styles = NumberStyles.None
    callTryParse numericString styles

    let styles = NumberStyles.AllowLeadingSign
    callTryParse numericString styles

    let numericString = "301677-"
    callTryParse numericString styles

    let styles = styles ||| NumberStyles.AllowTrailingSign
    callTryParse numericString styles

    let numericString = "$10634"
    let styles = NumberStyles.Integer
    callTryParse numericString styles

    let styles = NumberStyles.Integer ||| NumberStyles.AllowCurrencySymbol
    callTryParse numericString styles

    let numericString = "10345.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10345.72"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "22,593"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowThousands
    callTryParse numericString styles

    let numericString = "12E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles

    let numericString = "12E03"
    callTryParse numericString styles

    let numericString = "80c1"
    callTryParse numericString NumberStyles.HexNumber

    let numericString = "0x80C1"
    callTryParse numericString NumberStyles.HexNumber

    0

// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "106779"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-30677"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      styles = NumberStyles.AllowLeadingSign
      CallTryParse(numericString, styles)
      
      numericString = "301677-"
      CallTryParse(numericString, styles)
      
      styles = styles Or NumberStyles.AllowTrailingSign
      CallTryParse(numericString, styles)
      
      numericString = "$10634"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      styles = NumberStyles.Integer Or NumberStyles.AllowCurrencySymbol
      CallTryParse(numericString, styles)

      numericString = "10345.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "10345.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "22,593" 
      styles = NumberStyles.Integer Or NumberStyles.AllowThousands
      CallTryParse(numericString, styles)
      
      numericString = "12E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
          
      numericString = "12E03"
      CallTryParse(numericString, styles) 
      
      numericString = "80c1"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x80C1"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As Long
      Dim provider As CultureInfo
      
      ' If currency symbol is allowed, use en-US culture.
      If CBool(styles And NumberStyles.AllowCurrencySymbol) Then
         provider = CultureInfo.CurrentCulture
      Else
         provider = New CultureInfo("en-US")
      End If
      
      Dim result As Boolean = Int64.TryParse(stringToConvert, styles, _
                                             provider, 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 '106779' to 106779.
'       Attempted conversion of '-30677' failed.
'       Converted '-30677' to -30677.
'       Attempted conversion of '301677-' failed.
'       Converted '301677-' to -301677.
'       Attempted conversion of '$10634' failed.
'       Converted '$10634' to 10634.
'       Converted '10345.00' to 10345.
'       Attempted conversion of '10345.72' failed.
'       Converted '22,593' to 22593.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E03' to 12000.
'       Converted '80c1' to 32961.
'       Attempted conversion of '0x80C1' failed.

Açıklamalar

TryParse yöntemi yöntemine Parse benzer, ancak TryParse dönüştürme başarısız olursa yöntemi özel durum oluşturmaz. Geçersiz olan ve başarıyla ayrıştırılamayan bir olayda s test etmek için FormatException özel durum işleme kullanma gereksinimini ortadan kaldırır.

parametresi, style ayrıştırma işleminin başarılı olması için parametresinde s izin verilen stil öğelerini (boşluk veya pozitif veya negatif işareti gibi) tanımlar. Sabit listesindeki bit bayraklarının NumberStyles bir bileşimi olmalıdır. değerine styles bağlı olarak parametresi aşağıdaki öğeleri içerebilir:

[ws][$][sign][digits,]digits[.fractional_digits][e[sign]exponential_digits][ws]

Veya parametresi şunları style içeriyorsa NumberStyles.AllowHexSpecifier:

[ws]hexdigits[ws]

Köşeli ayraçlar ([ve]) içindeki öğeler isteğe bağlıdır. Aşağıdaki tablo her öğeyi açıklar.

Öğe Açıklama
Ws İsteğe bağlı beyaz boşluk. Bayrağı içeriyorsa başında sstyle veya bayrağı içeriyorsa NumberStyles.AllowLeadingWhite sonunda sstyleNumberStyles.AllowTrailingWhite boşluk görüntülenebilir.
$ Kültüre özgü para birimi simgesi. Dizedeki konumu, parametresinin yöntemi provider tarafından CurrencyPositivePattern döndürülen nesnenin NumberFormatInfo özelliği tarafından GetFormat tanımlanır. Bayrağı içeriyorsa NumberStyles.AllowCurrencySymbol para birimi simgesi içinde sstyle görünebilir.
sign İsteğe bağlı bir işaret. veya NumberStyles.AllowTrailingSign bayraklarını içeriyorsa NumberStyles.AllowLeadingSign içinde sstyle bir işaret simgesi görüntülenebilir.
Basamak

fractional_digits

exponential_digits
0 İle 9 arasında bir basamak dizisi. fractional_digits için yalnızca 0 rakamı geçerlidir.
, Kültüre özgü binlik ayırıcı. tarafından belirtilen provider kültürün binlik ayırıcısı bayrağını style içeriyorsa NumberStyles.AllowThousands içinde s görünebilir.
. Bir kültüre özgü ondalık nokta sembolü. bayrağını içeriyorsaNumberStyles.AllowDecimalPoint, tarafından provider belirtilen kültürün ondalık nokta simgesi içinde sstyle görünebilir.
E Değerin üstel gösterimde temsil edildiğini gösteren 'e' veya 'E' karakteri. parametresi, s bayrağını içeriyorsa bir sayıyı üstel gösteriminde styleNumberStyles.AllowExponent gösterebilir.
hexdigits 0 İle f veya 0 ile f arasında onaltılık basamak dizisi.

Not

içindeki s sonlandırıcı NUL (U+0000) karakterleri, bağımsız değişkenin değerinden style bağımsız olarak ayrıştırma işlemi tarafından yoksayılır.

Yalnızca ondalık basamağı olan bir dize (bayrağına NumberStyles.None karşılık gelir) her zaman başarıyla ayrıştırılıyor. Kalan NumberStyles üyelerin çoğu, bu giriş dizesinde bulunması gerekmeyen öğeleri denetler. Aşağıdaki tabloda, tek tek NumberStyles üyelerin içinde sbulunabilecek öğeleri nasıl etkilediği gösterilir.

Bileşik olmayan NumberStyles değerleri Basamaklara olarak s bileşeninde izin verilen öğeler
NumberStyles.None Yalnızca ondalık basamaklar.
NumberStyles.AllowDecimalPoint Ondalık ayırıcı ( . ) ve fractional_digits öğeleri. Ancak , fractional_digits yalnızca bir veya daha fazla 0 basamak içermelidir veya yöntemi döndürür false.
NumberStyles.AllowExponent parametresi üstel s gösterimi de kullanabilir. parametresi, s sıfır olmayan bir kesirli bileşen olmadan veri türü aralığındaki Int64 bir tamsayıyı temsil etmelidir.
NumberStyles.AllowLeadingWhite başındaki sws öğesi.
NumberStyles.AllowTrailingWhite sonundaki sws öğesi.
NumberStyles.AllowLeadingSign Basamakların önüne bir işaret görünebilir.
NumberStyles.AllowTrailingSign Basamakların ardından bir işaret görünebilir.
NumberStyles.AllowParentheses Sayısal değeri kapsayan parantez biçimindeki sign öğesi.
NumberStyles.AllowThousands Binlik ayırıcısı ( , ) öğesi.
NumberStyles.AllowCurrencySymbol $ öğesi.
NumberStyles.Currency Tüm öğeler. s parametresi onaltılık bir sayıyı veya üstel gösterimi olan bir sayıyı temsil edemez.
NumberStyles.Float başında veya sonundaki sws öğesi, öğesinin sbaşında ve ondalık ayırıcı ( . ) simgesiyle işaret eder. parametresi üstel s gösterimi de kullanabilir.
NumberStyles.Number ws, sign, thousands ayırıcısı (,) ve ondalık ayırıcı (.) öğeleri.
NumberStyles.Any Dışındaki s tüm stiller onaltılık bir sayıyı temsil edemez.

NumberStyles.AllowHexSpecifier Bayrağı kullanılıyorsa, s ön ek olmadan onaltılık bir değer olmalıdır. Örneğin, "C9AF3" başarıyla ayrıştırılsa da "0xC9AF3" ayrıştırılmaz. içinde bulunabilecek style diğer bayraklar yalnızca ve NumberStyles.AllowTrailingWhite'tirNumberStyles.AllowLeadingWhite. (Numaralandırma, NumberStylesNumberStyles.HexNumberher iki boşluk bayrağını da içeren bileşik bir stile sahiptir.)

provider parametresi, yöntemi bir IFormatProvider nesnesi döndüren GetFormat bir CultureInfoNumberFormatInfo nesne veya nesne gibi bir NumberFormatInfo uygulamadır. NumberFormatInfo nesnesi, biçimi shakkında kültüre özgü bilgiler sağlar. ise providernull, NumberFormatInfo geçerli kültürün nesnesi kullanılır.

Ayrıca bkz.

Şunlara uygulanır