Преобразование строки в int, допускающий значение NULL

Если _model.SubBrand - строка, есть ли более элегантный способ преобразовать ее в int, допускающий значение NULL? То, что я делаю сейчас, кажется неуклюжим:

public int? SubBrandIndex
{
    get
    {
        return _model.SubBrand == null ?
            (int?)null : Convert.ToInt32(_model.SubBrand);
    }
}

person Riegardt Steyn    schedule 11.04.2014    source источник


Ответы (2)


Во избежание исключений следует также проверять недопустимые строки.

public int? SubBrandIndex
{
    get
    {
        int value;
        return int.TryParse(subBrand, out value) ? (int?)value : null;
    }
}
person CuriousPen    schedule 11.04.2014
comment
Возможно, _model.SubBrand не назначается пользователем, и если ненулевая строка не может быть проанализирована, ее следует рассматривать как исключение, поскольку это ошибка. Если вы возвращаете nullable-int, вы не можете отличить пустую строку от недопустимой ненулевой строки. - person Tim Schmelter; 11.04.2014

Зачем вам однострочники, на мой взгляд, это очень понятно и читаемо:

public int? SubBrandIndex
{
    get
    {
        int? subBrandIndex = null;
        if (_model.SubBrand != null)
            subBrandIndex = int.Parse(_model.SubBrand);
        return subBrandIndex;
    }
}
person Tim Schmelter    schedule 11.04.2014