Подтвердить что ты не робот

Int32.Parse() VS Convert.ToInt32()?

intID1 = Int32.Parse(myValue.ToString());
intID2 = Convert.ToInt32(myValue);

Какой из них лучше и почему?

4b9b3361

Ответ 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.