2009-10-11 8 views
5

Czy istnieje instancja nieznanego odniesienia lub typu wartości, czy istnieje sposób sprawdzenia, czy instancja zawiera wartość domyślną dla tego typu? I wyobrazić coś takiego ...C# - Jak sprawdzić, czy wystąpienie jest wartością domyślną dla jego typu

bool IsDefaultValue(object value) 
{ 
    return value == default(value.GetType()); 
} 

Oczywiście, to nie działa, ponieważ GetType zwraca typ wykonania, ale mam nadzieję, że ktoś może zaproponować podobną technikę. Dzięki.

Odpowiedz

9
static bool IsDefaultValue<T>(T input) 
{ 
    return Object.Equals(input, default(T)); 
} 

Uwaga: nie można użyć == równości stosując ogólny typ T.

+4

można pominąć wyraźnego obiektu i po prostu zrobić equals (wejścia, domyślnie ((T)) –

+0

+1: Brian:) Oczywiście wolę być tak jednoznaczny, jak to tylko możliwe w przypadku tego rodzaju porównania. Funkcja OP jest metodą instancji i nie chcemy wywoływać niewłaściwej implementacji równań. – Juliet

+0

Wydaje się, że byłaby to świetna metoda rozszerzenia. – LJM

Powiązane problemy