Точный дубликат: .Net Parse vs Convert может мне помочь?
Разница между Convert.ToInt32 (строка) и Int32.Parse?
Ответы (4)
Convert.ToInt32(string)
и Int32.Parse(string)
дают одинаковые результаты, за исключением случаев, когда строка фактически является нулевой.
В этом случае Int32.Parse(null)
бросает ArgumentNullException
Но Convert.ToInt32(null)
возвращает ноль.
Так что лучше использовать Int32.Parse(string)
Метод синтаксического анализа дает вам больше возможностей для числовых форматов. В остальном они практически идентичны.
MSDN говорит:
Подробные сведения о Convert.ToInt32 ()
Int.Parse () попытка синтаксического анализа также может принимать формат
Int.Parse(String, NumberStyles)
вы также можете указать параметр out, и синтаксический анализ просто вернет true или false, чтобы показать, был ли синтаксический анализ успешным или нет
Если вам нужно преобразовать int, у вас есть 3 варианта.
int.Parse
Convert.ToInt32
int.TryParse
Из трех лучших решений обычно int.TryParse. Разница между этими тремя - и скорость, и надежность.
int.Parse вызовет исключение, если ему будет передано любое значение, кроме int. Общее практическое правило состоит в том, что исключения выполняются МЕДЛЕННО.
Convert.ToInt32 обработает значение null и вернет 0, однако вызовет исключение для других входных данных. Опять же, исключения происходят медленно.
int.TryParse будет обрабатывать почти все входные данные. Он вернет true или
false в зависимости от того, был ли переданный аргумент преобразован. Если результат false, преобразованное int равно 0. Если результат был true, int был преобразован и у вас есть преобразованный int.
Я бы ни для чего не использовал int.Parse. Если бы я был уверен, что введенные мной данные будут правильными, и у меня была бы какая-то проверка формы, я бы использовал Convert.ToInt32, просто чтобы избавить себя от ввода лишних строк. Во всех остальных случаях я бы использовал int.TryParse
Синтаксис для каждого:
int result;
boolean success;
result = int.Parse(null) = Exception
result = Convert.ToInt32(null) = 0
success = int.TryParse(null, out result) = False/0
result = int.Parse("asd") = Exception
result = Convert.ToInt32("asd") = Exception
success = int.TryParse("asd", out result) = False/0