Interpolation de la chaîne de caractères par rapport à la chaîne de caractères.Format

"151920920 il y a une notable différence de performance entre l'aide de la chaîne d'interpolation:

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

vs String.Format ()?

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

je demande seulement parce que Resharper est en train de provoquer le fix, et j'ai déjà été dupé auparavant.

59
demandé sur Krythic 2015-09-02 02:26:11

2 réponses

est relatif. Cependant: l'interpolation des chaînes de caractères est transformée en string.Format() lors de la compilation, de sorte qu'elles devraient finir avec le même résultat.

il y a de subtiles différences cependant: comme nous pouvons le voir à partir de cette question , la concaténation de chaîne dans le spécificateur de format résulte en un appel supplémentaire string.Concat() .

49
répondu Jeroen Vannevel 2017-05-23 12:18:12

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

aussi en chaîne.Format vous pouvez spécifier plusieurs sorties pour seul argument, et différents formats de sortie pour seul argument. Mais l'interpolation des chaînes est plus lisible je suppose. Donc, c'est à vous.

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 des performance les résultats de tests https://koukia.ca/string-interpolation-vs-string-format-string-concat-and-string-builder-performance-benchmarks-c1dad38032a

2
répondu Paul 2018-02-20 19:01:28