2009-01-17 80 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; 
}