2009-01-17 21 views
5

así que tengo este método:valor nulo del método genérico

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

Quiero ser capaz de devolver un valor nulo, o algún tipo de valor vacío, si no se encuentran filas. ¿Cuál es la sintaxis correcta para hacer esto?

Respuesta

9

Se podía volver predeterminado (K), y eso significa que devolverá un valor nulo si K es un tipo de referencia, o 0 para int, '\ 0' para el carbón, y así sucesivamente ...

A continuación, puede verificar fácilmente si que fue devuelto:

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

Usted podría return default(K).

4

usted tiene que utilizar la restricción genérica clase en el parámetro de tipo K (porque las clases - a diferencia de estructuras - son anulable)

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