C # 'da dizeyi tam sayıya dönüştürme


Yanıtlar:


136

Doğru ayrıştıracağından eminseniz,

int.Parse(string)

Değilseniz, kullanın

int i;
bool success = int.TryParse(string, out i);

Dikkat! Aşağıdaki durumda i, 10'dan sonra değil, 0'a eşit olacaktır TryParse.

int i = 10;
bool failure = int.TryParse("asdf", out i);

Bunun nedeni TryParse, ref parametresi değil, bir çıkış parametresi kullanmasıdır .


2
@sslaitha, teşekkürler. Sorunuzu yeterince cevapladıysa, lütfen cevap olarak işaretlemeyi unutmayın.
Brandon

3
İnt i = 10; ve int. TryParse ("asdf", dışarı i); 0 değil 10 içereceğim !!! Bunun nedeni, TryParse'ın ref değil, bir out değişkeni kullanmasıdır.
CaffGeek

2
"Dikkat" üçüncü örnek için geçerlidir - ikincisi değil. "Bu" ifadesinin aşağıdaki örneğe atıfta bulunmasını beklediğim için biraz şaşırmıştım.
peter_mcc

22
int myInt = System.Convert.ToInt32(myString);

Diğerlerinin de bahsettiği gibi int.Parse()ve kullanabilirsiniz int.TryParse().

Her stringzaman bir olacağından eminseniz int:

int myInt = int.Parse(myString);

stringGerçekten bir intilk olup olmadığını kontrol etmek isterseniz :

int myInt;
bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second value
if (isValid)
{
    int plusOne = myInt + 1;
}

11
int a = int.Parse(myString);

veya daha iyisi, bak int.TryParse(string)


6
string varString = "15";
int i = int.Parse(varString);

veya

int varI;
string varString = "15";
int.TryParse(varString, out varI);

int.TryParsedaha güvenlidir çünkü içine başka bir şey koyarsanız varString(örneğin "fsfdsfs") bir istisna elde edersiniz. Kullanarak int.TryParsedize int dönüştürülür edilemez zaman dönecektir 0.


5

Dizenizde "gerçek" sayı olduğundan eminseniz veya ortaya çıkabilecek herhangi bir istisnadan rahatsızsanız, bunu kullanın.

string s="4";
int a=int.Parse(s);

Süreç üzerinde biraz daha kontrol için, şunu kullanın:

string s="maybe 4";
int a;
if (int.TryParse(s, out a)) {
    // it's int;
}
else {
    // it's no int, and there's no exception;
}


3
int i;
string whatever;

//Best since no exception raised
int.TryParse(whatever, out i);

//Better use try catch on this one
i = Convert.ToInt32(whatever);

2

Burada 4 teknik kıyaslanmıştır.

En hızlı yol şuydu:

y = 0;
for (int i = 0; i < s.Length; i++)
       y = y * 10 + (s[i] - '0');

"s", int'e dönüştürülmesini istediğiniz dizenizdir. Bu kod, dönüştürme sırasında herhangi bir istisnanız olmayacağını varsayar. Dolayısıyla, dizgi verilerinizin her zaman bir tür int değeri olacağını biliyorsanız, yukarıdaki kod saf hız için gitmenin en iyi yoludur.

Sonunda, "y" sizin int değerinize sahip olacaktır.


2
bool result = Int32.TryParse(someString, out someNumeric)

Bu yöntem dönüştürmek için çalışacağız someStringiçine someNumericve dönüş resultdönüşüm, başarılı olursa bağlıdır truedönüşüm başarılı olursa ve falsedönüşüm başarısız olursa. Dönüşüm, Int32.Parseyöntemin yaptığı gibi başarısız olursa ve bunun yerine sıfır döndürürse , bu yöntemin istisna atmayacağını unutmayın someNumeric.

Daha fazla bilgi için burayı okuyabilirsiniz:

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
Dize nasıl dönüştürülür C # cinsinden tam sayı


0
int i;

string result = Something;

i = Convert.ToInt32(result);

0

Her ikisini de kullanabilirsiniz,

    int i = Convert.ToInt32(myString);

veya

    int i =int.Parse(myString);

0
class MyMath
{
    public dynamic Sum(dynamic x, dynamic y)
    {
        return (x+y);
    }
}

class Demo
{
    static void Main(string[] args)
    {
        MyMath d = new MyMath();
        Console.WriteLine(d.Sum(23.2, 32.2));
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.