web-dev-qa-db-fra.com

Interpolation de chaîne contre String.Format

Existe-t-il une différence de performance notable entre l’interpolation de chaîne:

myString += $"{x:x2}";

vs String.Format ()?

myString += String.Format("{0:x2}", x);

Je demande seulement parce que Resharper demande le correctif, et j'ai été dupé avant.

85
Krythic

Remarquable est relative. Cependant: l'interpolation de chaîne est transformée en string.Format() lors de la compilation, de sorte qu'ils doivent aboutir au même résultat.

Il existe cependant des différences subtiles: comme nous pouvons le constater à partir de this question, la concaténation de chaînes dans le spécificateur de format entraîne un appel supplémentaire de string.Concat().

61
Jeroen Vannevel

l'interpolation de chaîne est transformée en chaîne.Format () au moment de la compilation.

Également dans string.Format, vous pouvez spécifier plusieurs sorties pour un seul argument et différents formats de sortie pour un seul argument. Mais je suppose que l’interpolation de chaîne est plus lisible. C'est à vous de répondre.

a = string.Format("Due date is {0:M/d/yy} at {0:h:mm}", someComplexObject.someObject.someProperty);

b = $"Due date is {someComplexObject.someObject.someProperty:M/d/yy} at {someComplexObject.someObject.someProperty:h:mm}";

Il y a quelques résultats de test de performance https://koukia.ca/string-interpolation-vs-string-format-string-concat- and-string-builder-performance-benchmarks-c1dad38032a

4
Paul