2009-01-17 7 views
5

j'ai donc cette méthode:retour valeur nulle de méthode générique

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

Je veux être en mesure de retourner une valeur nulle, ou une sorte de valeur vide, si on trouve pas de lignes. Quelle est la syntaxe correcte pour le faire?

Répondre

9

Vous pouvez retourner par défaut (K), et cela signifie que vous retournerez null si K est un type de référence, ou 0 pour int, '\ 0' pour char, et ainsi de suite ...

Ensuite, vous peut facilement vérifier si cela a été retourné:

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

Vous pourriez return default(K).

4

Vous devez utiliser la contrainte générique de classe sur le paramètre de type K (parce que les classes - par opposition à structs - sont annulable)

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