Итак, у меня есть этот метод:
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]; }
Я хочу иметь возможность вернуть нулевое или какое-либо пустое значение, если строки не найдены Какой правильный синтаксис для этого?
Вы можете вернуть default (K), а это значит, что вы вернете null, если K является ссылочным типом, или 0 для int, '\ 0' для char и т. Д. *
Тогда вы можете легко проверить, было ли это возвращено:
if (object.Equals(resultValue, default(K))) { //... }
Вы должны использовать общее ограничение класса для параметра типа K (потому что классы - в отличие от структур - обнуляются)
internal K GetValue<T, K>(T source, string col) where K : class where T : IBaseObject { // ... return null; }
Вы могли бы return default(K).
return default(K)