Интерполированные строки против сцепленных строк

Как я могу проверить различия в сценариях использования интерполированных строк и конкатенационных строк, таких как этот пример:

Строковая интерполяция

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 вызов.


Как я могу оценить преимущества одного или другого способа? Существуют ли эталоны для этого типа вещей?

0 ответов

Другие вопросы по тегам