Интерполяция строк vs строка.Формат

есть ли заметная разница в производительности между использованием Строковой интерполяции:

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

vs строка.Format()?

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

Я спрашиваю только потому, что Resharper подсказывает исправление, и меня обманули раньше.

2 ответов


заметно относительно. Однако: интерполяция строк превращается в string.Format() во время компиляции, поэтому они должны получить тот же результат.

есть тонкие различия, хотя: как мы можем сказать из этой вопрос, конкатенация строк в спецификаторе формата приводит к дополнительному string.Concat() звонок.


строковая интерполяция превращается в строку.Формат() во время компиляции.

и в строке.Формат можно указать несколько выходов для одного аргумента и различные форматы вывода для одного аргумента. Но интерполяция строк более читабельна, я думаю. Так что решать тебе.

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}";

есть немного производительность результатов тестирования https://koukia.ca/string-interpolation-vs-string-format-string-concat-and-string-builder-performance-benchmarks-c1dad38032a