Лучше использовать 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);
}

Над кодом находится исходный источник.