2010-02-26 3 views

ответ

9
int a = int.Parse(myString); 

или еще лучше, посмотрите в int.TryParse(string)

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

Как некоторые другие уже упоминалось, вы можете также использовать int.Parse() и int.TryParse().

Если вы уверены, что string всегда будет int:

int myInt = int.Parse(myString); 

Если вы хотите, чтобы проверить, является ли string это действительно int первый:

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; 
} 
5

Если вы убедитесь, что у вас есть «реальный» номер в вашей строке, или вам удобно любое исключение, которое может возникнуть, используйте это.

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

Для более определенного контроля над процессом, используйте

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; 
} 
5

ли что-то вроде:

var result = Int32.Parse(str); 
127

Если вы уверены, что он будет разбирать правильно использовать

int.Parse(string) 

Если вы не используете

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

Внимание! В нижеследующем случае i будет равно 0, а не 10 после TryParse.

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

Это потому, что TryParse использует из параметр, а не реф параметр.

+2

@sslaitha, спасибо. Если он достаточно подробно ответил на ваш вопрос, не забудьте отметить его как ответ. – Brandon

+3

Просто обратите внимание, что если у вас есть int i = 10; и используйте int.TryParse («asdf», out i); что я буду содержать 0 не 10 !!! Это связано с тем, что TryParse использует переменную out, а не ref. – CaffGeek

+2

«Предупреждение» относится к третьему примеру, а не к второму. Меня немного озадачило, так как я ожидал, что «это» относится к приведенному выше примеру, а не ниже. –

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); 
6
string varString = "15"; 
int i = int.Parse(varString); 

или

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

int.TryParse безопаснее, так как если вы положили что-то еще в varString (например, "fsfdsfs") вы получите исключение. Используя int.TryParse, когда строка не может быть преобразована в int, она вернет 0.

0
int i; 

string result = Something; 

i = Convert.ToInt32(result); 
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)); 
    } 
} 
+0

рассмотрите возможность предоставления объяснения вашему коду – arghtype

1

4 techniques are benchmarked here.

Самый быстрый способ оказался следующим:

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

"s" ваша строка, которую преобразуется в междунар. Этот код предполагает, что во время преобразования вы не будете иметь никаких исключений. Поэтому, если вы знаете, что ваши строковые данные всегда будут своего рода значением int, приведенный выше код - лучший способ перейти на чистую скорость.

В конце «y» будет иметь значение int.

0

Вы можете использовать либо,

int i = Convert.ToInt32(myString); 

или

int i =int.Parse(myString); 
1

результат BOOL = Int32.TryParse (SomeString, из someNumeric)

Этот метод будет пытаться превратить ваш string someString в int someNumeric , и возвращая вам boolean result. true если конверсия выполнена успешно и false если преобразование не выполнено. Обратите внимание, что этот метод не будет генерировать исключение, если преобразование завершилось неудачно, как это сделал метод Int32.Parse, и вместо этого он возвращает ноль для someNumeric.

Для получения дополнительной информации вы можете прочитать здесь:

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
How to convert string to integer in C#

Смежные вопросы