2015-11-28 21 views
7

在Visual Studio 2015,当我去通过键入开口大括号写在可变内插串“{”,以实现下列操作:为什么Visual Studio为C#6插值字符串创建双闭合括号?

var a = $"{}"; 

第二结束托架被自动插入,红色或粉红色,作为这样

var a = $"{}}" 

插入括号内的可变后“{}”,并试图编译时,Visual Studio引发错误:“CS8086:A‘}’字符必须(通过加倍)进行转义在插入的字符串中“。这是有道理的,但并不能解释为什么第二个'}'出现在第一位!我不想写一个'}'文字字符;我只是想写一个常规的插值字符串 - 一个'}'用于一个'{'。每次我使用插值字符串时,我都不得不手动删除这个异常的第二个右括号以便成功编译。

最奇怪的是,它似乎并不总是发生。如果您从插入的字符串中删除“{}}”,并再次输入一个“{”,则最终会以{{}结尾 - 就像您首先要做的那样。

这是怎么回事?

+2

这不是主题。帮助中心明确指出,问题可能包含“程序员常用的软件工具” –

+3

VS2015 RTM有许多编辑器错误和怪癖,但这不是其中之一。你必须寻找一个加载项,并向所有者提交一个错误。 –

回答

6

这是由Resharper引起的。

你可以去

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

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

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

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

[编辑]我把它报告为the Resharper forums上的一个bug。一旦MODS批准它,我的错误报告应该出现在那里。

+3

在ReSharper选项 - >环境 - >编辑器 - >编辑器行为下禁用“自动插入右大括号”似乎可以解决这个问题,但奇怪的是,我发现在禁用此选项后没有区别一般auto-closing-brace-insertion-对于大括号,在工具 - >选项 - >文本编辑器 - > C# - >常规下有一个Visual Studio设置“自动大括号完成”,这可能与ReSharper的设置有关) – lordmilko

相关问题