Возврат нулевого значения из универсального метода - PullRequest
5 голосов
/ 17 января 2009

Итак, у меня есть этот метод:

    internal K GetValue<T, K>(T source, string col) where T : IBaseObject
    {
        string table = GetObjectTableName(source.GetType());
        DataTable dt = _mbx.Tables[table];
        DataRow[] rows = dt.Select("ID = " + source.ID);
        if (rows.Length == 0) return K;

        return (K) rows[0][col];
    }

Я хочу иметь возможность вернуть нулевое или какое-либо пустое значение, если строки не найдены Какой правильный синтаксис для этого?

Ответы [ 3 ]

9 голосов
/ 17 января 2009

Вы можете вернуть default (K), а это значит, что вы вернете null, если K является ссылочным типом, или 0 для int, '\ 0' для char и т. Д. *

Тогда вы можете легко проверить, было ли это возвращено:

if (object.Equals(resultValue, default(K)))
{
    //...
}
4 голосов
/ 17 января 2009

Вы должны использовать общее ограничение класса для параметра типа K (потому что классы - в отличие от структур - обнуляются)

internal K GetValue<T, K>(T source, string col)
        where K : class
        where T : IBaseObject
{
    // ...
    return null;
}
2 голосов
/ 17 января 2009

Вы могли бы return default(K).

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