Dois-je essayer d'utiliser la chaîne const au lieu de la chaîne dans la mesure du possible?

StackOverflow https://stackoverflow.com/questions/19846309

  •  29-07-2022
  •  | 
  •  

Question

Considérez ces trois exemples:

Exemple A

string message = "Hello world!";
throw new System.Exception(message);

Exemple B

const string message = "Hello world!";
throw new System.Exception(message);

Exemple C

throw new System.Exception("Hello world!");

Y a-t-il une raison d'en utiliser une sur les autres? Plus précisément, je ne devrais pas essayer d'utiliser la chaîne const si possible (en supposant que la chaîne n'est jamais modifiée), et donc l'exemple B est le meilleur? Que se passe-t-il dans l'exemple C?

Je suppose que je demande si l'IL émis par ce qui précède est identique ou différent, et s'il y a une différence. Je reconnais que la différence sera petite et probablement rien à craindre; Je suppose que cela en fait une question académique.


Éditer. Voici l'IL

IL_0014: ldstr "This is a string"
IL_0019: stloc.0
IL_001a: ldloc.0
IL_001b: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_0020: throw


IL_0033: nop
IL_0034: ldstr "This is a const string"
IL_0039: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_003e: throw

IL_0051: nop
IL_0052: ldstr "This is an inline string."
IL_0057: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_005c: throw

Me semble substantiellement identique.

Était-ce utile?

La solution 2

Il n'y a pas de différence en termes de performances, d'utilisation de la mémoire ou d'efficacité de la table de chaîne.

Le seul effet du mot clé const est de générer une erreur de temps de compilation lorsque la chaîne est réaffectée. Il est donc utile d'ajouter const pour communiquer votre intention à d'autres développeurs.

Autres conseils

Cela dépend vraiment du contexte. Ce message va-t-il jamais changer? Si vous utilisez l'option A, vous avez la possibilité de modifier la valeur du message de chaîne, avec les deux autres, vous imprimez une chaîne codée en dur - ce qui est bien, s'il va toujours dire que cela

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top