关于c#:使用指令进行组织

Organizing using directives

本问题已经有最佳答案,请猛点这里访问。

在过去的几个月里,我一直在使用Resharper,除了做广告外,没有它,我看不到自己在编码。因为我喜欢生活在流血的"到底出了什么问题"边缘,所以我决定试试我的运气,看看最新的Resharper 4.5每晚的版本。一切都很好。

但是,我注意到使用指令分组格式已经改变,我想知道哪一种更接近于一般标准:

[旧]

1
2
3
4
5
6
7
#region Using directives
using System.X;
using System.Y;
using System.Z;
using System.A;
#region
namespace X { ... }

[新]

1
2
3
4
5
6
7
8
9
namespace X {
#region Using directives
using System.X;
using System.Y;
using System.Z;
using System.A;
#region
...
}

除了延迟加载引用之外,它是否有任何特殊用途?(一直在阅读Scott Hanselman的文章,网址为:http://www.hanselman.com/blog/backtobasicsDonamespaceusingdirectesaffectassemblyloading.aspx)

谢谢;


正如斯科特在他的文章中发现的那样,这两种情况之间没有运行时差异。因此,它不能用于延迟加载引用。

如果你一直读到斯科特博客的评论,你也会看到,把这个谣言传给斯科特(迈克·布朗)的开发人员说他只听说过这个,没有亲自测试过。

也就是说,如果为命名空间中的某个类型设置了别名,并且在命名空间中定义了另一个具有相同名称的类型,那么将using指令放在何处可能会产生编译器错误,从而产生影响。但这当然不是运行时的区别。

最后,我相信微软的编码指南说要像Resharper 4.5那样做。但盲目遵循这条规则是愚蠢的,"因为微软这么说",因为

  • 事实证明,它没有任何好处。
  • 您的团队(或您的团队)通常的编码风格可能非常不同。

  • 嗯,通常是主观的。但是对我来说,通常是"老"的方式。


    哦,糟透了。我在找那个问题的时候没有看到。我知道这样做很愚蠢,因为微软这么说,但一般来说,这种"通常"的做法是什么?

    我知道我经常使用Resharper的代码清理,所以我只是想说实话。