c# using statements placement
Possible Duplicate:
Should Usings be inside or outside the namespace
我正在研究一个代码库,在这个代码库中,作者(我尊重的人)一致地将using语句放在命名空间内部,而不是放在它上面。是否有一些优势(更有效的GC?)这样做,还是这只是一个代码样式的首选项?
干杯,贝里尔
不要在不使用"global::"的情况下将它们放入系统,否则您的代码将变得脆弱。
1 2 3 4 | namspace bar { using foo //this may mean"using global::bar.foo OR using global::foo" } |
参考文献
http://blogs.msdn.com/b/ericlippet/archive/2007/06/25/inside-or-outside.aspx?WA= WSENIN 1.0
斯科特·汉塞尔曼在2008年7月发表了一篇关于这个的文章。我不知道这是否随.NET 4框架而改变,但它基本上是一个首选项问题,除非您将类命名为与现有类相同的名称,以及在一个文件中命名多个命名空间。
如果在同一个文件中有多个名称空间,那么您将只使用包含的名称空间而不是整个文件中的所有名称空间。
另请参见(刚刚找到了这个很好的解释)"using"语句应该在命名空间内部还是外部?
这是MS推荐练习。像StyleCop这样的程序推荐它。
签出SA1200是否所有的using指令都必须放在纯外观的名称空间(stylecop)中?更深入的讨论
这是一种偏好,但在某些情况下,当您在内部使用语句与在外部使用语句时,会有语义差异。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | using Bar; namespace Foo { using Bar; namespace Bar { class C { } } namespace Baz { class D { C c = new C(); } } } namespace Bar { class E { } } |
在这里,outer using语句引用命名空间foo后面的命名空间栏。inner using语句引用foo内的条。如果foo内没有酒吧,那么内部也指外部酒吧。
正如Jonathan指出的那样,可以将内部使用改为"using global::bar";以引用out bar名称空间,因为d试图使用c,这会破坏此特定代码。