Ssortingng.Empty versus “”

Duplication possible:
Quelle est la différence entre Ssortingng.Empty et “”

Comment est Ssortingng.Empty différent de "" ?

Ce n’est pas différent

http://msdn.microsoft.com/en-us/library/system.ssortingng.empty.aspx :

La valeur de ce champ est la chaîne de longueur zéro, “”.

Dans le code de l’application, ce champ est le plus souvent utilisé dans les affectations pour initialiser une variable de chaîne sur une chaîne vide. Pour tester si la valeur d’une chaîne est Ssortingng.Empty, utilisez la méthode IsNullOrEmpty.

Selon Brad Abrams :

Comme David l’indique, il y a une différence entre Ssortingng.Empty et “”, mais il y a une différence. “” Crée réellement un object, il sera probablement extrait du pool interne de chaîne, mais quand même… alors que Ssortingng.Empty ne crée aucun object… alors si vous êtes vraiment à la recherche d’efficacité mémoire, je suggère Ssortingng.Empty. Cependant, vous devez garder à l’esprit que la différence est tellement sortingvalente que vous aimerez ne jamais la voir dans votre code …

Comme pour System.Ssortingng.Empty ou ssortingng.Empty ou Ssortingng.Empty… mon niveau de soins est faible 😉

Mise à jour (6/3/2015):

Il a été mentionné dans les commentaires que la citation ci-dessus de 2003 n’est plus vraie (je suppose que cela fait référence à l’affirmation selon laquelle "" crée réellement un object). Je viens donc de créer deux programmes de console simples en C # 5 (VS 2013):

 class Program { static void Main() { // Outputs "True" Debug.WriteLine(ssortingng.IsInterned(ssortingng.Empty) != null); } } class Program { static void Main() { // Outputs "True" Debug.WriteLine(ssortingng.IsInterned("") != null); } } 

Cela démontre que les deux "" et Ssortingng.Empty sont tous deux internés lorsque votre code commence à s’exécuter, ce qui signifie que pour toutes les raisons pratiques, ils sont identiques.

La partie la plus importante du commentaire de Brad est la suivante:

Vous devriez garder à l’esprit que la différence est tellement sortingvalente que vous aimerez ne jamais la voir dans votre code …

C’est la ligne de fond. Choisir entre “” et Ssortingng.Empty n’est pas une décision basée sur les performances. Ne perdez pas beaucoup de temps à y penser. Choisissez en fonction de ce que vous trouvez plus lisible, ou de la convention qui est déjà utilisée dans votre projet.

Dans la plupart des cas, Ssortingng.Empty is identical to "" mais en général, il est plus facile d’utiliser Ssortingng.IsNullOrEmpty(str) au lieu de devoir comparer str == "" || str == null str == "" || str == null Aussi, si vous êtes sur .NET 4.0 Ssortingng.IsNullOrWhiteSpace(str) couvre encore plus de cas et est de loin le meilleur.

Il n’y a pas de différence. Certains préfèrent utiliser Ssortingng.Empty à des fins de lisibilité du code. Utilisez celui que vous êtes à l’aise avec.

J’ai entendu des rumeurs à propos de Ssortingng.Empty étant le même object tout le temps, alors que “” est un nouvel object à chaque occasion, mais je ne sais pas exactement si c’est correct.

La raison principale de Ssortingng.Empty est la lisibilité.