Прошерстил весь свой справочник по C# и не смог найти что такое '$'.
Я понял только то, что это чем-то похоже на verbatim string '@'.
Console.WriteLine($"?");
Как это влияет на строку?
Ответ
Префикс $ перед строкой обозначает, что далее идет интерполированная строка.
Интерполяция используется для удобного конструирования строки. При этом выражение интерполированных строк может выглядеть как шаблон строки, в котором могут быть использованы выражения языка.
Интерполированные строки легче в понимании относительно аргументов, по сравнению с композитным форматированием
Пример:
var s = $"Name = {name}, hours = {hours:hh}";
По сравнению с string.Format
var s = string.Format("Name = {0}, hours = {1:hh}", name, hours);
Важное отличие от того же string.Format:
String interpolation is transformed at compile time to invoke an equivalent string.Format call. This leaves in place support for localization as before (though still with traditional format strings) and doesn’t introduce any post compile injection of code via strings.
Интерполированная строка в момент компиляции трансформируется в эквивалентный вызов string.Format. Это оставляет поддержку локализации как прежде (хотя все еще с традиционным форматированием строк) и не позволяет добавлять любые инъекции кода в строку, после компиляции.
Данная возможность появилась с выходом C# 6
Подробнее можно почитать в справке на MSDN
Комментариев нет:
Отправить комментарий