| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > String в int |
| Автор: kurzon 3.11.2007, 01:24 |
| Как переменую типа String конвертировать в тип int? |
| Автор: marcusmae 3.11.2007, 01:31 | ||||
так
или так
Различие в том, что подопечные класса Convert возвращают результат и в случае ошибок вываливают исключение, а .TryParse-ы сообщают о степени успешности в логический результат и значение передают через аргумент на выход. |
| Автор: Xenon 3.11.2007, 02:21 |
| marcusmae, а операции типа int.Parse(...) чем от этих двух отличаются? |
| Автор: marcusmae 3.11.2007, 12:52 |
Ага, забыл про неё. |
| Автор: Xenon 3.11.2007, 14:31 |
| marcusmae, нет, я задал вопрос, а не решил подстебнуть. Мне интересно чем эта фигня - то от тех отличается или алгоритм один и тот же? |
| Автор: marcusmae 3.11.2007, 15:35 | ||
| Ааа Ну чем .Parse отличается от .TryParse - это как, допустим в System.Collections.Genetic.Dictionary<T>, есть индексер по ключам, возвращающий значения и есть .TryGetValue, возвращающий bool, а значение - через out-аргумент. Ээ, тут не вижу что объяснять, просто разные подходы. А вот Convert.ToInt32 отличается от Int32.Parse тем, как обрабатывается null. Convert.ToInt32 возвращает ноль, а Int32.Parse вывалит исключение. Вы правы, на это стоит обратить внимание. По этому поводу в http://blogs.msdn.com/ianhu/archive/2005/12/19/505702.aspx :
и проводится некоторое сравнение. |
| Автор: tol05 3.11.2007, 16:24 | ||
| Int32.Parse - если приведение строки к int невозможно - выбрасывается исключение. Опасно использовать без try-catch. Int32.TryParse - если приведение строки к int невозможно - просто возвращает false, исключение не выбрасывается. Само название говорит этой функции "попробую привести, после выполнения скажу "да" или "нет" Convert.ToInt32 - тоже выбрасывает исключение при неудаче. Ну а зачем Convert.ToInt32, если есть Int32.Parse ? Да просто клас Convert разработан для любых приведений между базовыми типами .Net, не только string в int , но и "любой базовый тип в любой базовый тип". Посчитали - сколько возможно комбинаций преобразования среди базовых типов, да и написали все методы преобразования. А Convert - это враппер для всех этих методов. Вот Convert.ToInt32 из рефлектора
|
| Автор: Xenon 3.11.2007, 16:40 |
| Насчет исключений был в курсе, а того, что Convert, по сути, оболочка лишь - нет. Спасибо |