使用C#在Visual Studio中进行命名空间缩进

Wil*_*ert 13 c# indentation visual-studio visual-studio-2012

Visual Studio在命名空间中缩进代码.全局禁用缩进时可以避免这种情况,这不是我想要的.在其他情况下,压痕是好的,我只是不喜欢的事实,所有的代码是一个级别 - 这使得它看起来丑陋给我.

namespace X
{
    public class A
    {}
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢这样:

namespace X
{
public class A
{

}
}
Run Code Online (Sandbox Code Playgroud)

在C++中,有一个很好的解决方法,因为解释在这里:

namespace X
{; // the ; after opening brace makes visual studio not indent the class below.

class A
{};

}
Run Code Online (Sandbox Code Playgroud)

但是在C#中,命名空间不能直接包含字段,因此这不起作用.

如何在不全局禁用缩进的情况下让Visual Studio停止缩进命名空间?

更新 Visual Studio 2013行为C++已更改

Tools->Options->C/C++->Formatting->Indentation: [ ] Indent namespace contents 
Run Code Online (Sandbox Code Playgroud)

启用我首选的格式,而{; 技巧不再起作用了.但是我找不到C#的变化.

ces*_*ito 8

  1. 文本编辑器→c#→选项卡→缩进 - 设置为"阻止"
  2. 文本编辑器→c#→格式化→常规 - 关闭每个复选框,说"自动格式化..."

  • 请说出复选框是什么,而不是“前两个”。如果 VS 更改其设置对话框,这将有所帮助。并且可能在第二个中删除 Tabs,这是一种误导。 (2认同)

Paw*_*wan 8

这个问题值得在 2021 年得到新的答案。C#10(随 .NET 6 和 Visual Studio 2022 一起提供)引入了文件作用域命名空间。它允许使用以下语法:

namespace Hello.World;

class MyClass
{
    public static void Main()
    {
        Console.WriteLine("Hello, World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,我们可以完全删除命名空间声明添加的缩进。也支持旧语法。