使用语句的格式/缩进(C#)

JYe*_*ton 13 c# formatting using-statement

当谈到using在C#中的语句(不要与混淆using 的指令是导入命名空间),Visual Studio中没有如果没有括号使用下面缩进单行代码.这是典型的"嵌套"使用如此SO问题中所示的语句.

我发现后面的后续语句using没有缩进,这与if语句的格式不同,我觉得很困惑:

// non-indented using statement
using (var myResource = new SomeIDisposableResource())
myResource.Indent(false);

// indented if statement
if (something == true)
    IndentMe();
Run Code Online (Sandbox Code Playgroud)

有没有理由缩进,或者只是偏好?

// indented using statement, but not the default VS formatting
using (var myResource = new SomeIDisposableResource())
    myResource.Indent();
Run Code Online (Sandbox Code Playgroud)

编辑:

进一步测试显示我对某些VS格式化行为不正确.如果键入using语句:

using (var myResource = SomeIDisposableResource())
Run Code Online (Sandbox Code Playgroud)

...然后按Enter键,光标将与之对齐using.如果下一行也是using语句,它将继续对齐.如果不是,VS将在完成后缩进.因此,我的原始问题有些无效,因为除非您覆盖默认格式或使用不执行此操作的IDE,否则我的第一个示例实际上无法实现.

但是,值得知道的是,多个using语句最好被视为单个块,因为它们在技术上是一样的.缺少缩进仅适用于语句是using没有大括号的顺序语句; 当一个人习惯了,他们就不再那么寻常了.

一如既往地感谢所有那些为这些小编程细节提供见解和经验的人.

Jon*_*eet 24

正如其他人所说,总是使用大括号.然而,有一个习惯用法有点违背这个使用"非缩进":

using (Resource1 res1 = new Resource1())
using (Resource2 res2 = new Resource2())
using (Resource3 res3 = new Resource3())
{
    // Do stuff with res1, res2 and res3
}
Run Code Online (Sandbox Code Playgroud)

但是我总是使用大括号作为最里面的块:)


kem*_*002 13

这是偏好.我总是缩进,并将必要的项目放在括号中

using(var t = new t())
{
   t.Foo();
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,我甚至把它用于单行.这是偏好,但我遇到了太多情况,有人意外地评论或删除某些内容,而if语句将其控制范围扩展到了应有的范围之外.有时它是一个巨大的头痛,导致数小时的调试.我遵循明确清晰,更安全而不是抱歉的原则. (2认同)

Ran*_*pho 5

轻松修复:始终使用显式块,即使是单行也是如此.然后,Visual Studio将正确缩进,作为奖励,您的代码将更易于维护!

  • @JYelton,不太好.更易于维护,因为如果您以后想在那里添加一行或删除它以进行调试或其他东西,那么大括号已经存在,并且您不会冒险忘记它们并浪费时间调试它. (2认同)