Другие языки программирования и технологии

Чем Отличается Parse от Try.Parse и Convert.To в языке C#?

Недавно начал читать Шилдта, и никак не могу понять, ЗАЧЕМ столько команд с одним и тем же ефектом
ДБ
Дима Бурцев
1 396
Методы Convert имеют много перегрузок, выполняющих конвертацию разных типов, тогда как Parse конвертирует только строки.
Также некоторые методы Convert имеют большую функциональность, например Convert.ToInt32(string, int) поддерживает четыре системы счисления - двоичную, восьмеричную, десятичную и шестнадцатеричную, а int.Parse - только две.

А в случае тех методов Convert, функциональность которых полностью аналогична методам Parse, особой разницы нет, т. к. эти методы внутри вызывают тот же Parse.

Про отличие TryParse уже написали в других ответах. Если входная строка получена из источника, который гарантирует её корректность (как например MaskedTextBox, который не позволит ввести что-то неправильное) - используй Parse. Если же входная строка может содержать что угодно (например, когда она просто считывается из консоли) - используй TryParse, чтобы в случае некорректного ввода не допустить падения приложения, а просто прервать выполнение и попросить пользователя исправить некорректные данные.
Сергей Орехов
Сергей Орехов
24 295
Лучший ответ
Try.Parse от Parse отличается тем, что Try.Parse безопасно конвертирует данные, а Parse может положить приложение если не сможет конвертировать. Try.Parse применяется обычно когда данные динамически приходят и не угадаешь, что внутри будет, то ли число, то ли строка, то ли дырка от бублика и вроде работает со всеми типами. Convert работает с простыми типами и тоже грохнет приложение если не получится конвертировать, как бы для элементарных случаев, когда строку интегер надо в биг интегер по быстрому и неприхотливо. По сути эти 3 разных класса для преобразования в разных ситуациях. Try.Parse это такой самый мощный, Parse для средних случаев, а Convert для самых элементарных
Vadim Black
Vadim Black
74 419
Convert.To выбрасывает исключение при ошибке, а Try.Parse возвращает false.
Класс Convert нужен только для однообразия преобразований. Все эти преобразования можно выполнить и без него. Например, есть метод int.Parse.
Дима Бурцев А когда использовать ИнтПарс, и Конверт Ту Инт?
Сергей Красов .TryParse (без точки между Try и Parse)