c# - 字符串插值 - 花括号内的@符号有什么作用?

标签 c# .net

考虑:

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?

那么我什么时候需要花括号的@符号?

最佳答案

$"Hello { myValue }"是在 C#6 中引入的内插字符串。在您的情况下,这相当于调用 String.Format("Hello {0}", myValue) .

当您的变量与关键字同名时,需要逐字记录 ( @ ),据我所知,关键字是 newline不是。但是以下会导致编译器错误:

String.Format("Hello {0}", if)

虽然这不会:

String.Format("Hello {0}", @if)

此处逐字告诉编译器 if变量的名称,而不是if -关键字

所以你不需要逐字记录你的情况,因为newline不是关键字。或者换句话说,您的代码等同于:

Console.WriteLine("Hello with at{0}how are you?", @newline);

这是逐字逐句的有效(即使是多余的)用法。

有关更多信息,请参阅 documentation about string-interpolation .

关于c# - 字符串插值 - 花括号内的@符号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52111891/

相关文章:

c# - 每次点击时使用同一按钮触发2个不同事件的有效方法?

c# - 添加 .NET Framework DLL 作为对 Windows 应用商店应用程序的引用

c# - WCF 契约(Contract)第一个 : complexType has already been declared

c# - 为什么允许入口点是私有(private)的?

c# - 发现 op_Addition 或实现 Expression.Add 的方法

c# - Entity Framework 错误 : The field "ForeignKey" is required EF

c# - 为什么 T.TryParse 不返回 Nullable<T>

c# - SqlParameter DbType.Date -> SqlDbType.DateTime 转换

c# - 如何在 WinRT 应用程序中使用 nUnit 测试?

c# - 循环和更改列表 - 删除并不总是有效