web-dev-qa-db-fra.com

Comment vérifier si String est nul

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?

35
Otiel

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.

58
Jon Skeet

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

12
Oliver Slay

Pour sûr, vous devez utiliser la fonction pour vérifier est nulle et vide comme ci-dessous:

string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}
12
MrTo-Kane