考虑:
string newline = "\r\n";
Console.WriteLine($"Hello without at{newline}how are you?");
Console.WriteLine($"Hello with at{@newline}how are you?");
两条线的输出是相同的。换行符总是打印为换行符。
Hello without at
how are you?
Hello with at
how are you?
那么,何时需要花括号内的at符号?
最佳答案
$"Hello { myValue }"
是C#6中引入的内插字符串。在您的情况下,这等效于对String.Format("Hello {0}", myValue)
的调用。
当您的变量与关键字具有相同的名称时,就需要逐字记录(@
),据我所知,newline
不是。但是,以下内容将导致编译器错误:
String.Format("Hello {0}", if)
虽然这不会:
String.Format("Hello {0}", @if)
这里的逐字记录告诉编译器
if
是变量的名称,而不是if
-keyword。因此,您不需要逐字记录,因为
newline
不是关键字。换句话说,您的代码与此等效:Console.WriteLine("Hello with at{0}how are you?", @newline);
这是逐字的有效用法(即使是多余的)。
有关更多信息,请引用documentation about string-interpolation。
关于c# - 字符串插值-大括号内的@符号做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52111891/