Разница между Convert.ToInt32 (строка) и Int32.Parse?

Точный дубликат: .Net Parse vs Convert может мне помочь?


person Community    schedule 02.05.2009    source источник


Ответы (4)


Convert.ToInt32(string) и Int32.Parse(string) дают одинаковые результаты, за исключением случаев, когда строка фактически является нулевой.

В этом случае Int32.Parse(null) бросает ArgumentNullException

Но Convert.ToInt32(null) возвращает ноль.

Так что лучше использовать Int32.Parse(string)

person Iralda Mitro    schedule 02.05.2009
comment
Какой из них лучше, на самом деле зависит от ваших потребностей. - person Joey; 02.05.2009

Метод синтаксического анализа дает вам больше возможностей для числовых форматов. В остальном они практически идентичны.

MSDN говорит:

Подробные сведения о Convert.ToInt32 ()

Сведения о Int32.Parse ()

person Steven Richards    schedule 02.05.2009

Int.Parse () попытка синтаксического анализа также может принимать формат

Int.Parse(String, NumberStyles)

вы также можете указать параметр out, и синтаксический анализ просто вернет true или false, чтобы показать, был ли синтаксический анализ успешным или нет

person Sadegh    schedule 02.05.2009

Если вам нужно преобразовать 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
person Chase    schedule 11.07.2011