Общие методы и необязательные аргументы

Можно ли написать подобную конструкцию?
Я хочу каким-то образом установить значение по умолчанию для аргумента типа T.

    private T GetNumericVal(string sColName, T defVal = 0)
    {
        string sVal = GetStrVal(sColName);
        T nRes;
        if (!T.TryParse(sVal, out nRes))
            return defVal;

        return nRes;
    }

Кроме того, я нашел следующую ссылку: Общее преобразование типа FROM string
Я думаю, этот код должен работать

private T GetNumericVal(string sColName, T defVal = default(T)) where T : IConvertible
{
    string sVal = GetStrVal(sColName);
    try
    {
        return (T)Convert.ChangeType(sVal, typeof(T));
    }
    catch (FormatException)
    {
        return defVal;
    }            
}

13
задан Heretic Monkey 21 July 2017 в 20:27
поделиться