2009-10-11 15 views
5

Dada una instancia de una referencia desconocida o tipo de valor, ¿hay alguna forma de comprobar si la instancia contiene el valor predeterminado para ese tipo? Preveo algo como esto ...C# - Cómo probar si una instancia es el valor predeterminado para su tipo

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

Por supuesto, esto no funciona porque GetType devuelve un tipo de tiempo de ejecución, pero espero que alguien pueda sugerir una técnica similar. Gracias.

Respuesta

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

Nota: no se puede utilizar para la igualdad == usando tipo genérico T.

+4

Puede omitir el objeto explícito y sólo lo hacen los iguales (de entrada, por defecto ((T)) –

+0

1: Brian:) Por supuesto, prefiero ser lo más explícito posible para este tipo de comparación. La función de OP es un método de instancia, y no queremos llamar a la implementación incorrecta de Equals. – Juliet

+0

Parece que sería un gran método de extensión. – LJM

Cuestiones relacionadas