2009-01-17 12 views
5

więc mam tej metody:Wracając wartość null z metoda rodzajowa

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

Chcę być w stanie powrócić do null, lub jakąś pustą wartość, jeśli nie zostaną znalezione żadne wiersze. Jaka jest prawidłowa składnia, aby to zrobić?

Odpowiedz

9

Można powrócić domyślne (K), a to oznacza, wrócisz null, jeśli K jest typem odniesienia, lub 0 dla int, '\ 0' na char, i tak dalej ...

Wtedy można łatwo sprawdzić, czy że został zwrócony:

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

mogłeś return default(K).

4

Musisz użyć klasy rodzajowe ograniczenie dla parametru typu K (z powodu zajęć - w przeciwieństwie do elemencie - są pustych)

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