Лучше использовать int.Parse или Convert.ToInt32
Возможный дубликат:
В чем основное отличие между int.Parse() и Convert.ToInt32
Привет, ребята, я хотел бы знать, что такое PRO и CONS для использования
Convert.ToInt32 VS int.Parse.
Спасибо за поддержку!
Вот пример синтаксиса, который я использую
int myPageSize = Convert.ToInt32(uxPageSizeUsersSelector.SelectedValue);
int myPageSize = int.Parse(uxPageSizeUsersSelector.SelectedValue);
Я также узнал эту статью, может быть, может помочь в обсуждении
http://dotnetperls.com/int-parse
http://aspdotnethacker.blogspot.com/2010/04/difference-between-int32parsestring.html
http://aspdotnethacker.blogspot.com/p/visual-studio-performance-wizard.html
Ответы
Ответ 1
Convert.ToInt32
предназначен для работы с любым объектом, который реализует IConvertible
и может быть преобразован в int
. Кроме того, Convert.ToInt32
возвращает 0
для null
, а int.Parse
выбрасывает ArgumentNullException
.
int.Parse
предназначен для работы со строками.
Как оказалось, реализация string
типа IConvertible
просто использует int.Parse
в своем методе ToInt32
.
Так эффективно, если вы вызываете Convert.ToIn32
на string
, вы вызываете int.Parse
, просто с немного большей накладной (еще несколько вызовов метода).
Это верно для любого преобразования из string
в некоторый примитивный тип (все они называют Parse
). Поэтому, если вы имеете дело с сильно типизированными объектами string
(например, вы разбираете текстовый файл), я бы рекомендовал Parse
просто потому, что он более прямой.
Преобразование произвольных объектов (например, возвращаемых вам какой-либо внешней библиотекой) - это сценарий, в котором я бы выбрал класс Convert
.
Ответ 2
Там нет большой разницы. Здесь цитата найдена в msdn.
В основном класс Convert делает это проще конвертировать между всеми базовыми типы.
Convert.ToInt32 (String, IFormatProvider) под вызовами Int32.Parse. Таким образом, единственное различие что если пустая строка передается Преобразование возвращает 0, тогда как Int32.Parse выбрасывает ArgumentNullException. MSDN
Ответ 3
Я не могу ответить в зависимости от производительности, но мой предпочтительный метод всегда является int.tryparse(mystring, out myint), поскольку это дает чистый сбой, который вы можете протестировать в потоке программы (вместо того, чтобы делать попытку/улов).
Ответ 4
Интерфейс Convert является более универсальным. Конечный результат должен быть таким же, хотя.
Внутри он просто вызывает int.Parse:
public static int ToInt32(String value) {
if (value == null)
return 0;
return Int32.Parse(value, CultureInfo.CurrentCulture);
}
Над кодом находится исходный источник.