2009-01-17 9 views
5

So habe ich diese Methode:Rückkehr Nullwert von generischer Methode

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

Ich mag eine Null zurückkehren zu können, oder eine Art leeren Wertes, wenn keine Zeilen gefunden werden. Was ist die korrekte Syntax dafür?

Antwort

9

Sie könnten Standard (K) zurückkehren, und das bedeutet, Sie null zurück, wenn K ein Referenztyp ist, oder 0 für int, '\ 0' für char und so weiter ...

Sie dann kann leicht überprüfen, ob das zurückgegeben wurde:

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

Sie könnten return default(K).

4

Sie haben die Klasse generische Einschränkung auf den K-Typ-Parameter zu verwenden (da Klassen - wie Structs Gegensatz - sind nullable)

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