2009-01-17 116 views
5

返回空值,所以我有这样的方法:从泛型方法

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]; 
    } 

我希望能够返回空值,或某种空值,如果没有行被发现。什么是正确的语法来做到这一点?

回答

9

你可以为炭返回默认值(K),这意味着你将返回null如果K是引用类型,或者为0,INT,“\ 0”,等等...

然后你可以很容易地验证是否返回:

if (object.Equals(resultValue, default(K))) 
{ 
    //... 
} 
2

您可以return default(K)

4

你必须使用的K型参数类通用的限制(因为类 - 而不是结构 - 可以为空)

internal K GetValue<T, K>(T source, string col) 
     where K : class 
     where T : IBaseObject 
{ 
    // ... 
    return null; 
}