为什么Visual Studio为C#6插值字符串创建双重括号?

时间:2015-11-28 12:04:49

标签: c# visual-studio-2015

在Visual Studio 2015中,当我通过键入一个开头的大括号' {'来实现以下内容时,在变量中编写插值字符串:

var a = $"{}";

自动插入第二个结束括号,红色或粉红色,如此

var a = $"{}}"

在括号内插入变量' {}'并尝试编译,Visual Studio抛出一个错误:" CS8086:A'}'必须在插值字符串中对字符进行转义(通过加倍)。"。这是有道理的,但并没有解释为什么第二个'}'出现在第一位!我不想写一个'}'字面意义;我只是想写一个常规插值字符串 - 一个'}'为了一个' {'。每次我使用插值字符串时,我都被迫手动删除这个异常的第二个右括号,以便成功编译。

最奇怪的是,它似乎并不是一直发生的。如果您删除了' {}}'从你的插值字符串中输入一个' {'再次,你最终会得到' {}' - 正如你首先想到的那样。

这种行为是什么?

1 个答案:

答案 0 :(得分:6)

这是由Resharper造成的。

您可以通过转到

来证明这一点

工具|选项| ReSharper |一般|暂停

然后再试一次。额外的}不会出现。 (我试过R#10.0)

在R#插入了额外的}之后按了^ Z我一直在解决这个问题,但它仍然有点烦人。

我想这应该被报告为R#网站上的一个错误(除非它已经在最近的版本中得到修复)。

[编辑]我已将其报告为the Resharper forums上的错误。一旦mod批准,我的错误报告就会出现在那里。