В чем разница между Convert и Parse? - PullRequest
5 голосов
/ 15 августа 2010

Я мог бы написать следующее, чтобы преобразовать объект в целое число.

Convert.ToInt32(myObject);

Но я тоже мог написать

Int.Parse(myObject.ToString());
  • Есть ли разница?
  • Какой я должен использовать?

Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 15 августа 2010
  • Есть ли какая-либо разница?

Да, Int32.parse(myObject.ToString()); принимает обходной путь, который обычно будет работать, но он не нужен, и он может потерпеть неудачу илидать другой результат.

  • Какой я должен использовать?

В общем, Convert.ToInt32(myObject);

Но этозависит от того, какой тип данных вы хотите конвертировать.

Если myObject = '1';, хотите ли вы 1 или 49?

Если myObject = false;, хотите ли вы 0 или исключение?

и т. Д.

1 голос
/ 15 августа 2010

Согласно документации , это будет зависеть от объекта и от того, реализует ли он интерфейс IConvertible .Есть ряд причин, которые отличают эти подходы.Примечательно, что если строковое представление не представляет соответствующее целочисленное значение (например, «{Value = 123}») или объект не является IConvertible.Я бы предпочел использовать Convert.ToInt32(), поскольку конверсия определяется типом, а не полагаться на некоторое наблюдаемое свойство, которое может измениться в будущем.

1 голос
/ 15 августа 2010

Вот как Convert.ToInt32 источник метода выглядит как

public static int ToInt32(object value) {
    return value == null? 0: ((IConvertible)value).ToInt32(null); 
}

Пока ваш объект реализует интерфейс IConvertible, вы должны вызывать этот метод.

0 голосов
/ 15 августа 2010

Насколько я знаю, Convert и Parse отличаются во многих отношениях:

Преобразовать означает преобразовать объект из исходного типа в другой тип (если это возможно). Однако оба объекта как-то равны в своем собственном контексте, например, «32» - это строковая версия 32 (как целое число). в некоторых языках, таких как Visual Basic, такое преобразование может происходить неявно.

Анализировать означает принимать входные данные (обычно в форме строки) и переводить их в объект, который может быть совершенно другой вещью. Возьмем дату в качестве примера: мы можем проанализировать «20 июля 2010», которая является строкой для даты. Это означает, что мы должны перевести предоставленную строку в объект даты, у которого 20 - день, 7 - месяц, а 2010 - год. Очевидно, что эта задача непростая, и для анализа строки должна существовать логика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...