Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Visual Studio为C#6插值字符串创建双右括号?_C#_Visual Studio 2015 - Fatal编程技术网

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

为什么Visual Studio为C#6插值字符串创建双右括号?,c#,visual-studio-2015,C#,Visual Studio 2015,在Visual Studio 2015中,当我通过键入开头的花括号“{”在变量中写入插值字符串时,可以实现以下目的: var a = $"{}"; 第二个结束括号将自动插入,颜色为红色或粉红色,如下所示 var a = $"{}}" 在括号“{}”中插入变量并尝试编译后,Visual Studio抛出错误:“CS8086:必须在插值字符串中转义“}”字符(通过加倍)。”。这是有道理的,但根本不能解释为什么第二个“}”出现在第一位!我不想写“}”字;我只是想为一个“{”编写一个常规的插值字符串

在Visual Studio 2015中,当我通过键入开头的花括号“{”在变量中写入插值字符串时,可以实现以下目的:

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的设置是多余的)