8
votes

String.empty, null, longueur ou string.Isempullaire?

De quelle manière est vraiment le moyen le plus rapide de rechercher une chaîne vide et il y a un cas spécifique dans lequel vous avez besoin de tout spécifique.

1. String.IsNullOrEmpty()

2. str == null

3. str == null || str == String.Empty

4. str == null || str == ""

5. str == null || str.length == 0


6 commentaires

Le 1er est la bonne façon. Parce que c'est intégré dans une corde.


'str' n'est pas un bon nom de variable


Dans la plupart de ces exemples, il n'y a pas de différence. Par exemple, des tests pour voir si la longueur est 0 vérifie pour voir si sa chaîne vide. Dans un exemple, vérifiant simplement pour voir si son NULL est une sorte de stupide, car la valeur par défaut d'une chaîne est une chaîne vide, pas une chaîne NULL. Nous parlons de différend de performance que vous ne commencerez même pas à mesurer car ils sont si négligeables. Arrêtez d'essayer d'optimiser les tâches triviales.


Il est peu probable que cela fasse une différence. Meilleure souci de str == "" .


@Ramhound Qu'est-ce qui vous fait penser que la valeur par défaut pour chaîne est une chaîne vide? chaîne est un type de référence, sa valeur par défaut est NULL.


str n'est pas un bon nom de variable. s est tout simplement bien.


9 Réponses :


4
votes

Vous souciez-vous de WhitSpace aussi?

Si WhitSpace est valide, utilisez string.isnullorempty , sinon utilisez string.isnullorwhitepace (in .NET 4.0 ou supérieur). Ce dernier est équivalent à, mais plus performant que, string.isnullorempty (valeur) || valeur.trim (). longueur == 0;

voir http://msdn.microsoft.com/fr -us / bibliothèque / system.string.isnullorwhitepace.aspx


0 commentaires

0
votes

J'utilise personnellement toujours string.isnullorempty () . Je ne pense pas vraiment qu'ils font quelque chose de spécial autre que de vérifier s'il est null ou vide, il ne devrait donc pas être plus lent qu'un chèque écrit à la main.

En outre, vous pouvez parfois être pressé et mettre accidentellement le NULL Vérifiez à la fin, obtenez une mauvaise surprise. :)


0 commentaires

22
votes

Utiliser l'option 1.

Si vous souhaitez spécifiquement vérifier null ou des chaînes vides, il n'y a aucune raison d'utiliser autre chose que string.isnullorempty . C'est la façon canonique de le faire dans .NET, et toutes les différences de performance seront presque certainement négligeables.

Ceci est un exemple de manuel de Prématuré Optimisation ; Par tous les moyens, écrivez code efficace , mais ne gaspillez pas le temps de développement sur celui-ci sans aucun gain justifiable de la performance. N'oubliez pas que votre temps comme un développeur est généralement loin plus précieux que le temps de la CPU.

Quoth Donald Knuth:

Nous devrions oublier de petites gains d'efficacité, disons environ 97% du temps: l'optimisation prématurée est la racine de tout mal.

Si ce niveau de micro-optimisation est véritablement nécessaire à votre application, vous ne devez probablement pas utiliser .NET.


0 commentaires

2
votes

La différence de vitesse sera imperceptible.

La bonne façon de le faire est de 1, car il est le plus sûr et le mieux lisible.


0 commentaires

1
votes

string.isnullorempty () est très lisible et fonctionne / fonctionne comme prévu, serait heureux de s'en tenir à cela.

Avez-vous vraiment un scénario d'affaire Edge où sa chute courte alors s'il vous plaît ajouter la même chose à la question qui le rendrait plus pertinent.


0 commentaires

1
votes

Utilisez

String.IsNullOrEmpty()


0 commentaires

3
votes

a trouvé ce site web avec des statistiques sur les différentes méthodes: http://www.dotnetperls.com/empty -tring


0 commentaires


-1
votes

Dans vos échantillons, la solution 2 est la plus rapide. Mais c'est une solution différente des autres, car elle ne vérifie pas si la chaîne est vide.

Sinon, étant donné que vous souhaitez vérifier si une chaîne est null ou vide, la solution 5 est la plus rapide. String.isnullorempty () fait exactement la même chose que la solution 5 mais ajoute un appel de fonction (s'il n'est pas inlisé au moment de l'exécution). Néanmoins, je recommanderais la première solution:

1 / la pénalité de performance est négligeable

2 / Il est plus facile de lire

3 / C'est une méthode intégrée, c'est donc la preuve future


4 commentaires

Je dois descendre cette réponse car la valeur par défaut d'une variable de chaîne est une chaîne vide non une chaîne nulle. Bien que tout ce que vous dites sur string.isnullempty est correct.


Je ne comprends pas ton point. Où puis-je parler de la valeur par défaut d'une chaîne?


J'ai fait ce point. Ce qui est négatif à votre déclaration que la solution 2 est la plus rapide, car elle ne semble pas vraiment faire ce que l'auteur veut réellement tester pour, car il a des utilisations limitées.


C'est pourquoi j'ai précisé "mais c'est une solution différente des autres, car elle ne vérifie pas si la chaîne est vide."