如何在C#6中使用string插值使用转义字符?

我一直在使用string插值和爱它,但是我有一个问题,我试图在我的输出中包含一个反斜杠,但是我不能得到它的工作。

我想要的是这样的

var domain = "mydomain"; var userName = "myUserName"; var combo = $"{domain}\{userName}" 

我想要组合的输出

 myDomain\myUserName 

我得到的是关于\是一个转义字符的语法错误。 如果我放入\\然后snytax错误消失了,但输出是myDomain \\ myUsername

如何在一个插入string中包含转义字符?

用反斜杠( \ )转义除了大括号之外的所有字符。

如果您尝试转义大括号( {} ),则必须使用{{}}每个https://msdn.microsoft.com/en-us/library/dn961160.aspx

…所有出现的双花括号(“{{”和“}}”)被转换为单个大括号。

您可以使用$ @来做到这一点。 顺序很重要。

 var combo = $@"{domain}\{userName}"; 
 $"{domain}\\{user}" 

工作正常 – 转义工作像往常一样(转义{除外)。 至less在.NET 4.6和VS 14.0.22823 D14REL上。

如果由于某种原因无法正常工作(也许您使用的是旧版本的编译器?),那么您也可以尝试更加明确:

 $"{domain}{@"\"}{user}" 

如果我没有误解。 解决scheme非常简单

 var domain = "mydomain"; var userName = "myUserName"; var combo = $"{{{domain}}}\\{{{userName}}}"; Console.WriteLine(combo); 

我同意birdamongmen答案以及那里提供的很好的参考。 希望对你有帮助。 我的5美分

爱德华多是正确的。 你加倍地摆脱大括号。 因此,如果你想输出域variables为{mydomain},你需要做:

 $"{{{domain}}}"; 

此外,假设目前的date是2016年9月1日,这样做:

 $"The date is {DateTime.Now}"; 

会输出类似于“date为2016/09/01 3:04:48 PM”,取决于您的本地化。 您也可以通过执行以下格式来设置date:

 $"The date is {DateTime.Now : MMMM dd, yyyy}"; 

将输出“date为2016年9月1日”。 插值string更可读。 好的回答爱德华多。