所以我有这个方法:
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];
}
如果没有找到行,我希望能够返回null或某种空值。这样做的正确语法是什么?
答案 0 :(得分:9)
你可以返回默认值(K),这意味着如果K是引用类型,你将返回null,或者对于int是0,对于char是'\ 0',依此类推......
然后您可以轻松验证是否已返回:
if (object.Equals(resultValue, default(K)))
{
//...
}
答案 1 :(得分:4)
你必须在K类型参数上使用类泛型约束(因为类 - 而不是结构 - 可以为空)
internal K GetValue<T, K>(T source, string col)
where K : class
where T : IBaseObject
{
// ...
return null;
}
答案 2 :(得分:2)
你可以return default(K)
。