2009-10-11 9 views
5

Étant donné une instance d'une référence inconnue ou d'un type de valeur, est-il possible de tester si l'instance contient la valeur par défaut pour ce type? Je prévois quelque chose comme ça ...C# - Comment tester si une instance est la valeur par défaut pour son type

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

Bien sûr, cela ne fonctionne pas parce que GetType retourne un type d'exécution, mais j'espère que quelqu'un peut proposer une technique similaire. Merci.

Répondre

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

Remarque: vous ne pouvez pas utiliser == pour l'égalité en utilisant le type générique T.

+4

Vous pouvez ignorer l'objet explicite et juste faire Equals (entrée, par défaut ((T)) –

+0

+1: Brian: Bien sûr, je préfère être aussi explicite que possible pour ce genre de comparaison. La fonction OP est une méthode d'instance, et nous ne voulons pas appeler la mauvaise implémentation de Equals. – Juliet

+0

On dirait que ce serait une excellente méthode d'extension. – LJM

Questions connexes