代码之家  ›  专栏  ›  技术社区  ›  BlueRaja - Danny Pflughoeft

Visual Studio在if语句后添加空格

  •  9
  • BlueRaja - Danny Pflughoeft  · 技术社区  · 14 年前

    有时(但并非总是如此!?)当我用分号粘贴或结束一行时,Visual Studio将在 if 声明!例如,粘贴时

    if()
    

    会变成这样:

    if (condition)
    

    当完成一行时

    if(condition)
        DoSomething()
    

    会变成这样:

    if (condition)
        DoSomething();
    

    必须经常删除这个空间(有时两次!)绝对是在驱使我 笨蛋! 它似乎发生在 如果 while 但不是 for .

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

    为什么Visual Studio要惩罚我?

    4 回复  |  直到 14 年前
        1
  •  20
  •   Jon Skeet    14 年前

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

    犯罪嫌疑人 你会发现你已经检查过了,你不想这样。(我特意检查了一下:)

        2
  •  4
  •   Steve Townsend    14 年前

    根据需要禁用自动格式化。

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

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

    • 自动格式化已完成的对账单;
    • 自动格式化}上已完成的块
    • 粘贴时自动格式化
        3
  •  0
  •   Raymund    14 年前

    另一个好的技巧是让代码保持原样,然后按CTRL+K+D,它将自动格式化代码并修复空格

        4
  •  0
  •   Victor Chelaru    7 年前

    Visual Studio的行为似乎有点不一致。我在这里测试了所有内容,并在选项中选中了“自动格式化”设置,如下图所示:

    enter image description here

    我使用了以下代码:

    if(true)
    {
       int m = 3;
    }
    

    如果我将上面的代码复制/粘贴到Visual Studio中,visualstudio将自动应用格式设置,从而在 if .

    如果我手动键入代码,Visual Studio将不会在 如果 ,即使在使用右括号完成if行之后,甚至在使用右括号完成if块之后。

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

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