Int32.Parse() VS Convert.ToInt32()?
intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);
Какой из них лучше и почему?
Ответы
Ответ 1
Они точно такие же, за исключением того, что Convert.ToInt32(null)
возвращает 0
.
Convert.ToInt32
определяется следующим образом:
public static int ToInt32(String value) {
if (value == null)
return 0;
return Int32.Parse(value, CultureInfo.CurrentCulture);
}
Ответ 2
Ну, рефлектор говорит...
public static int ToInt32(string value)
{
if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);
}
public static int Parse(string s)
{
return Number.ParseInt32(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo);
}
Таким образом, они в основном одинаковы, за исключением того, что Convert.ToInt32()
добавляет нулевую проверку.
Ответ 3
Это зависит от того, что вы подразумеваете под "лучше", потому что "лучше" субъективно.
Например, читаемость кода. Некоторые люди предпочитают видеть "Конвертировать" в свой код; другие предпочитают видеть "Парсис".
Что касается скорости, они также примерно равны по этим критериям.
Или вы всегда хотите вернуть значение? Как отмечали другие, ConvertTo возвращает 0 (ноль) для нулевых значений, тогда как вы не получаете эту опцию с Parse.