@sslaitha, спасибо. Если он достаточно ответил на ваш вопрос, не забудьте пометить его как ответ.
Брэндон,
3
Обратите внимание: если у вас int i = 10; и используйте int.TryParse ("asdf", out i); что я буду содержать 0, а не 10 !!! Это потому, что TryParse использует переменную out, а не ссылку.
CaffGeek
2
«Осторожность» относится к третьему примеру, а не ко второму. Меня немного озадачило, так как я ожидал, что «это» будет относиться к примеру выше, а не ниже.
peter_mcc 06
22
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 valueif (isValid)
{
int plusOne = myInt + 1;
}
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.
int i;
string whatever;
//Best since no exception raisedint.TryParse(whatever, out i);
//Better use try catch on this one
i = Convert.ToInt32(whatever);
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
«s» - это ваша строка, которую вы хотите преобразовать в int. Этот код предполагает, что у вас не будет никаких исключений во время преобразования. Итак, если вы знаете, что ваши строковые данные всегда будут иметь какое-то значение типа int, приведенный выше код - лучший способ добиться чистой скорости.
bool result = Int32.TryParse(someString, out someNumeric)
Этот метод попытается преобразовать someStringв someNumericи вернет в resultзависимости от того, успешно trueли преобразование , если преобразование прошло успешно и falseесли преобразование не удалось. Обратите внимание, что этот метод не будет генерировать исключение, если преобразование завершилось неудачно, как это Int32.Parseсделал метод, и вместо этого он возвращает ноль для someNumeric.
Дополнительную информацию вы можете прочитать здесь:
Ответы:
Если вы уверены, что он будет разбираться правильно, используйте
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
используется параметр out , а не параметр ref .источник
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; }
источник
int a = int.Parse(myString);
или еще лучше, загляните в
int.TryParse(string)
источник
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
.источник
Если вы уверены, что у вас есть «реальный» номер в вашей строке, или вам удобно любое исключение, которое может возникнуть, используйте это.
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; }
источник
Сделайте что-нибудь вроде:
var result = Int32.Parse(str);
источник
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);
источник
Здесь тестируются 4 метода.
Самый быстрый способ оказался следующим:
y = 0; for (int i = 0; i < s.Length; i++) y = y * 10 + (s[i] - '0');
«s» - это ваша строка, которую вы хотите преобразовать в int. Этот код предполагает, что у вас не будет никаких исключений во время преобразования. Итак, если вы знаете, что ваши строковые данные всегда будут иметь какое-то значение типа int, приведенный выше код - лучший способ добиться чистой скорости.
В конце «y» будет иметь ваше значение int.
источник
bool result = Int32.TryParse(someString, out someNumeric)
Этот метод попытается преобразовать
someString
вsomeNumeric
и вернет в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
&
Как преобразовать строку в целое число в C #
источник
int i; string result = Something; i = Convert.ToInt32(result);
источник
Вы можете использовать либо,
int i = Convert.ToInt32(myString);
или
int i =int.Parse(myString);
источник
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)); } }
источник