在Visual Studio 2015中,当我通过键入一个开头的大括号' {'来实现以下内容时,在变量中编写插值字符串:
var a = $"{}";
自动插入第二个结束括号,红色或粉红色,如此
var a = $"{}}"
在括号内插入变量' {}'并尝试编译,Visual Studio抛出一个错误:" CS8086:A'}'必须在插值字符串中对字符进行转义(通过加倍)。"。这是有道理的,但并没有解释为什么第二个'}'出现在第一位!我不想写一个'}'字面意义;我只是想写一个常规插值字符串 - 一个'}'为了一个' {'。每次我使用插值字符串时,我都被迫手动删除这个异常的第二个右括号,以便成功编译。
最奇怪的是,它似乎并不是一直发生的。如果您删除了' {}}'从你的插值字符串中输入一个' {'再次,你最终会得到' {}' - 正如你首先想到的那样。
这种行为是什么?
答案 0 :(得分:6)
这是由Resharper造成的。
您可以通过转到
来证明这一点工具|选项| ReSharper |一般|暂停
然后再试一次。额外的}
不会出现。 (我试过R#10.0)
在R#插入了额外的}
之后按了^ Z我一直在解决这个问题,但它仍然有点烦人。
我想这应该被报告为R#网站上的一个错误(除非它已经在最近的版本中得到修复)。
[编辑]我已将其报告为the Resharper forums上的错误。一旦mod批准,我的错误报告就会出现在那里。