В C # 6 появилась новая функция: интерполированные строки.
Они позволяют вставлять выражения прямо в код, а не полагаться на индексы:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
становится:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Однако у нас есть много строк в нескольких строках, использующих дословные строки (в основном операторы SQL), например:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Возврат их к обычным строкам кажется беспорядочным:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Как использовать вместе дословные и интерполированные строки?
Ответы:
Вы можете применить оба
$
и@
префиксы к одной и той же строки:С тех пор как введена в C # 6 , интерполированное стенографических строк пришлось начинать с токенов
$@
, но , начиная с C # 8, то вы можете использовать$@
или@$
.источник
@$"..."
) не работает, что приводит меня сюда.$@"..."
в таком порядке.$@
работает, когда@$
нет, имеет смысл, если подумать. Когда я запутался в этом, что часто случалось, когда я начинал использовать этот синтаксис, я всегда говорил себе: «Интерполировать эту дословную строку», потому что обратное не имело бы смысла.const string
, оставьтеconst
.