Je me demande s'il existe une méthode/astuce spéciale pour vérifier si un objet String
est nul. Je connais le String.IsNullOrEmpty
mais je veux différencier une chaîne null
d'une chaîne vide (= ""
).
Dois-je simplement utiliser:
if (s == null) {
// blah blah...
}
... ou existe-t-il un autre moyen?
Un objet ne peut pas être nul - la valeur d'un expression peut être nulle. Cela vaut la peine de faire la différence clairement dans votre esprit. La valeur de s
n'est pas un objet - c'est un référence, qui est soit nul, soit fait référence à un objet.
Et oui, vous devez simplement utiliser
if (s == null)
Notez que cela utilisera toujours l'opérateur == surchargé défini dans la chaîne, mais cela fera la bonne chose.
Vous pouvez utiliser les doubles points d'interrogation coalescents null pour tester les valeurs null dans une chaîne ou un autre type de valeur nullable:
textBox1.Text = s ?? "Is null";
L'opérateur '??' demande si la valeur de 's' est nulle et sinon, elle retourne 's'; s'il est nul, il renvoie la valeur à droite de l'opérateur.
Plus d'informations ici: https://msdn.Microsoft.com/en-us/library/ms173224.aspx
Et il convient également de noter qu'il existe un opérateur à condition nulle?. et? [introduit en C # 6.0 (et VB) dans VS2015
textBox1.Text = customer?.orders?[0].description ?? "n/a";
Cela renvoie "n/a" si la description est nulle, ou si la commande est nulle, ou si le client est nul, sinon il renvoie la valeur de la description.
Plus d'informations ici: https://msdn.Microsoft.com/en-us/library/dn986595.aspx
Pour sûr, vous devez utiliser la fonction pour vérifier est nulle et vide comme ci-dessous:
string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}