C# Visual Studio在if语句后添加空格

C# Visual Studio在if语句后添加空格,c#,visual-studio-2008,formatting,resharper,C#,Visual Studio 2008,Formatting,Resharper,有时(但不总是!?)当我用分号粘贴或结束一行时,Visual Studio会在if语句后添加空格!例如,粘贴时 if() 将变成这样: if (condition) if (condition) DoSomething(); 而且,当完成一行时 if(condition) DoSomething() 将变成这样: if (condition) if (condition) DoSomething(); 不得不不断地删除这个空间(有时两次!)简直让我发疯!这似乎

有时(但不总是!?)当我用分号粘贴或结束一行时,Visual Studio会在
if
语句后添加空格!例如,粘贴时

if()
将变成这样:

if (condition)
if (condition)
    DoSomething();
而且,当完成一行时

if(condition)
    DoSomething()
将变成这样:

if (condition)
if (condition)
    DoSomething();
不得不不断地删除这个空间(有时两次!)简直让我发疯!这似乎发生在
if
while
时,而不是
for

我在VS选项中找不到与此相关的任何内容。我确实安装了Resharper,但它设置为不会自动添加空间:


为什么Visual Studio会惩罚我?禁用您认为合适的自动格式化功能

工具->选项->文本 编辑器->C#->格式->常规

默认情况下,我的C#Express 2010配置中会选中所有选项:

  • 自动格式化已完成的报表
  • 在}上自动格式化已完成的块
  • 粘贴时自动格式化

在Visual Studio选项中,在文本编辑器/C#/Formatting/Spacing下的“设置其他间距选项”部分中,有一个“在控制流语句中的关键字后插入空格”选项


我怀疑你会发现你已经检查过了,你不想这样。(我特意检查过:)

另一个好方法是保持编码不变,然后按CTRL+K+D,它将自动格式化代码并修复空格Visual Studio的行为在这里似乎有点不一致。我在这里测试了所有选项中选中的“自动格式化”设置,如下图所示:

我使用了以下代码:

if(true)
{
   int m = 3;
}
如果我将上述代码复制/粘贴到Visual Studio中,Visual Studio将自动应用格式设置,从而在
If
之后产生一个空格

如果我手动键入代码,Visual Studio将不会在
If
之后自动添加空格,即使我用右括号完成了If行,甚至用右括号完成了If块

正如在另一个答案中提到的,如果我使用CTRL+K+D来格式化整个文档,VisualStudio会在if之后插入一个空格


这有点令人沮丧,因为如果我手动编写代码,我在if之后就没有空间了(出于习惯),但是如果我粘贴代码或格式化文档,我确实会有空间。

你的格式化首选项对我来说很奇怪,但是对于“为什么Visual Studio会惩罚我?”我听说“if()”是公认的C标准的一部分,这很奇怪。有人可以验证吗?如果设置不正确,它会弄乱空格。粘贴后,您可以始终使用ctl-z来删除应用的格式。