100 votes

Types Nullables : meilleur moyen de vérifier la présence de NULL ou Zero en c#

Je travaille sur un projet où je trouve que je vérifie ce qui suit dans de nombreux endroits :

if(item.Rate == 0 || item.Rate == null) { }

Plus qu'une curiosité, quelle est la meilleure façon de vérifier les deux cas ?

J'ai ajouté une méthode d'aide qui est :

public static bool nz(object obj)
{
    var parsedInt = 0;
    var parsed = int.TryParse(obj.ToString(), out parsedInt);
    return IsNull(obj) || (parsed && parsedInt == 0);
}

Y a-t-il un meilleur moyen ?

177voto

eglasius Points 26221

J'aime if ((item.Rate ?? 0) == 0) { }

Mise à jour 1 :

Vous pouvez également définir une méthode d'extension comme :

public static bool IsNullOrValue(this double? value, double valueToCheck)
{
    return (value??valueToCheck) == valueToCheck;
}

Et utilisez-le comme ceci :

if(item.IsNullOrValue(0)){}// mais vous n'en tirez pas grand-chose

44voto

CMS Points 315406

Utilisation des génériques :

static bool IsNullOrDefault<T>(T value)
{
    return object.Equals(value, default(T));
}

//...
double d = 0;
IsNullOrDefault(d); // true
MyClass c = null;
IsNullOrDefault(c); // true

Si T c'est un type de référence, value sera comparé null (default(T)), sinon, si T est un value type, disons double, default(t) est 0d, pour bool est false, pour char est '\0' et ainsi de suite...

2voto

Nick Josevski Points 1997

Je suis d'accord avec l'utilisation de l'opérateur ? ?.

Si vous avez affaire à des chaînes, utilisez if(String.IsNullOrEmpty(myStr))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X