为什么Visual Studio为C#6插值字符串创建双右括号?
在Visual Studio 2015中,当我通过键入开头的花括号“{”在变量中写入插值字符串时,可以实现以下目的:为什么Visual Studio为C#6插值字符串创建双右括号?,c#,visual-studio-2015,C#,Visual Studio 2015,在Visual Studio 2015中,当我通过键入开头的花括号“{”在变量中写入插值字符串时,可以实现以下目的: var a = $"{}"; 第二个结束括号将自动插入,颜色为红色或粉红色,如下所示 var a = $"{}}" 在括号“{}”中插入变量并尝试编译后,Visual Studio抛出错误:“CS8086:必须在插值字符串中转义“}”字符(通过加倍)。”。这是有道理的,但根本不能解释为什么第二个“}”出现在第一位!我不想写“}”字;我只是想为一个“{”编写一个常规的插值字符串
var a = $"{}";
第二个结束括号将自动插入,颜色为红色或粉红色,如下所示
var a = $"{}}"
在括号“{}”中插入变量并尝试编译后,Visual Studio抛出错误:“CS8086:必须在插值字符串中转义“}”字符(通过加倍)。”。这是有道理的,但根本不能解释为什么第二个“}”出现在第一位!我不想写“}”字;我只是想为一个“{”编写一个常规的插值字符串-1'}”。每次我使用插值字符串时,我都被迫手动删除这个异常的第二个结束括号,以便成功编译
最奇怪的是,这种情况似乎并非总是发生。如果从插入的字符串中删除“{}”,然后再次键入单个“{”,那么最终将得到“{}”,正如您最初所预期的那样
这种行为是怎么回事?这是由Resharper造成的 你可以通过去 工具|选项|重新竖琴|常规|立即暂停 然后再试一次。额外的
}
将不会出现。(我试过R#10.0)
我一直在解决这个问题,在R#插入了一个额外的}
后按^Z键,但仍然有点烦人
我想这应该被报告为R#站点上的一个bug(除非最近的版本已经修复)
[编辑]我已将其报告为上的错误。我的错误报告应该在mods批准后出现。这不是离题。帮助中心明确指出,问题可能包括“程序员常用的软件工具”。VS2015 RTM有很多编辑器错误和怪癖,但这不是其中之一。您必须查找执行此操作的加载项,并向所有者提交一个错误。在ReSharper Options->Environment->Editor->Editor behavior下禁用“自动插入右大括号”似乎可以解决此问题,但奇怪的是,禁用此选项后,我没有发现与常规自动插入右大括号行为的区别(对于大括号,在工具->选项->文本编辑器->C#->常规下有一个Visual Studio设置“自动大括号完成”,这可能与ReSharper的设置是多余的)