对于C#中的using
语句(不要与导入名称空间的using
指令混淆),Visual Studio不会缩进单行代码如果没有使用大括号,则遵循。这是典型的使用this SO question中显示的语句“嵌套”。
我发现using
之后的后续语句没有缩进,与if
语句的格式不同,我觉得很困惑:
// non-indented using statement
using (var myResource = new SomeIDisposableResource())
myResource.Indent(false);
// indented if statement
if (something == true)
IndentMe();
是否有任何理由不缩进,或者只是偏好?
// indented using statement, but not the default VS formatting
using (var myResource = new SomeIDisposableResource())
myResource.Indent();
修改
进一步测试显示我对某些VS格式化行为不正确。如果键入using语句:
using (var myResource = SomeIDisposableResource())
...然后按Enter键,光标将与using
对齐。如果下一行也是using语句,它将继续对齐。如果不是,VS将在完成后缩进。因此,我的原始问题有些无效,因为除非您覆盖默认格式或使用不执行此操作的IDE,否则我的第一个示例实际上无法实现。
但是,值得知道的是,多个using
语句最好被视为单个块,因为它们在技术上是。缺少缩进仅适用于语句是没有大括号的顺序using
语句;当一个人习惯了,他们就不再那么寻常了。
一如既往地感谢所有那些为这些小编程细节提供见解和经验的人。
答案 0 :(得分:24)
正如其他人所说,总是使用牙箍。但是,一个成语有点违背而使用“非缩进”:
using (Resource1 res1 = new Resource1())
using (Resource2 res2 = new Resource2())
using (Resource3 res3 = new Resource3())
{
// Do stuff with res1, res2 and res3
}
但是我总是在最里面的块中使用大括号:)
答案 1 :(得分:13)
这是偏好。我总是缩进,并将必要的项放在括号中
using(var t = new t())
{
t.Foo();
}
答案 2 :(得分:5)
轻松修复:始终使用显式块,即使是单行也是如此。然后,Visual Studio将正确缩进,作为奖励,您的代码将更易于维护!
答案 3 :(得分:0)
答案 4 :(得分:0)
我喜欢在我错的时候被投票,所以我要从中做出答案......
我将如何格式化它:
using (Resource1 res1 = new Resource1())
using (Resource2 res2 = new Resource2())
using (Resource3 res3 = new Resource3())
DoStuffWithResources(res1, res2, res3);
如果我用多个语句替换DoStuffWithResources
,我会使用大括号。但是,我的编辑阻止我犯下以下错误:
using (Resource1 res1 = new Resource1())
using (Resource2 res2 = new Resource2())
using (Resource3 res3 = new Resource3())
DoStuffWithResources(res1, res2, res3);
DoOtherStuffWithResources(res1, res2, res3);
当我尝试输入上述内容时,我立即得到:
using (Resource1 res1 = new Resource1())
using (Resource2 res2 = new Resource2())
using (Resource3 res3 = new Resource3())
DoStuffWithResources(res1, res2, res3);
DoOtherStuffWithResources(res1, res2, res3);
专业提示:downvote不是反驳,所以如果你没有反对,你就不应该投票。