Интерполированные строки против сцепленных строк
Как я могу проверить различия в сценариях использования интерполированных строк и конкатенационных строк, таких как этот пример:
Строковая интерполяция
const string a = "I change per class or method";
string b = $"abcdefghijklmnopqrstuvw {a} xyz";
Console.WriteLine(b);
IL_0000: ldstr "abcdefghijklmnopqrstuvw {0} xyz"
IL_0005: ldstr "I change per class or method"
IL_000A: call System.String.Format
IL_000F: call System.Console.WriteLine
IL_0014: ret
Надеемся, что это будет хранить одно значение a
через интернирование строк для всего кода, но стоимость использования string.Format
может отменить преимущества хранения одной маленькой строки.
конкатенация
const string a = "I change per class or method";
string b = "abcdefghijklmnopqrstuvw " + a + " xyz";
Console.WriteLine(b);
IL_0000: ldstr "abcdefghijklmnopqrstuvw I change per class or method xyz"
IL_0005: call System.Console.WriteLine
IL_000A: ret
Это будет хранить много разных строк, так как похоже, что они сцеплены во время компиляции, поэтому у вас будет много "похожих" копий этой же строки, кроме a
часть этого будет отличаться. Преимущество в том что нет string.Format
вызов.
Как я могу оценить преимущества одного или другого способа? Существуют ли эталоны для этого типа вещей?