Страницы

Поиск по вопросам

пятница, 29 ноября 2019 г.

Префикс перед string: '$'

#c_sharp #c_sharp_faq


Прошерстил весь свой справочник по C# и не смог найти что такое '$'.

Я понял только то, что это чем-то похоже на verbatim string '@'.

Console.WriteLine($"?");


Как это влияет на строку?
    


Ответы

Ответ 1



Префикс $ перед строкой обозначает, что далее идет интерполированная строка. Интерполяция используется для удобного конструирования строки. При этом выражение интерполированных строк может выглядеть как шаблон строки, в котором могут быть использованы выражения языка. Интерполированные строки легче в понимании относительно аргументов, по сравнению с композитным форматированием Пример: 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

Ответ 2



Это интерполяция строк, удобная вещь, которая позволяет написать выражение: int i=1; Console.WriteLine($"i={i}"); Подробнее тут: https://msdn.microsoft.com/ru-ru/library/dn961160.aspx

Комментариев нет:

Отправить комментарий