我正在寻找一个代码库,其中作者(我尊重的一方)始终在命名空间内使用语句,而不是在其上方。这样做是否有一些优势(效率更高的GC?)或仅仅是代码风格偏好?
干杯,
Berryl
答案 0 :(得分:2)
不要在不使用“global ::”的情况下将它们放入其中,否则您的代码将变得脆弱。
namspace bar {
using foo //this may mean "using global::bar.foo OR using global::foo"
}
参考
http://blogs.msdn.com/b/ericlippert/archive/2007/06/25/inside-or-outside.aspx?wa=wsignin1.0
答案 1 :(得分:1)
如果在同一个文件中有多个名称空间,那么您将仅使用包含名称空间而不是整个文件中的所有名称空间。
另见(刚发现这个好的解释)Should 'using' statements be inside or outside the namespace?
答案 2 :(得分:1)
Scott Hanselman在2008年7月做了post about this。我不知道这是否随.NET 4框架而改变,但它基本上归结为一个偏好问题,除非你将你的类命名为与现有类以及单个文件中的多个名称空间相同。
答案 3 :(得分:0)
这是一种偏好,但在某些情况下使用内部语句与外部语句时存在语义差异。
using Bar;
namespace Foo
{
using Bar;
namespace Bar
{
class C
{
}
}
namespace Baz
{
class D
{
C c = new C();
}
}
}
namespace Bar
{
class E
{
}
}
在此,外部using语句引用名称空间Foo之后的名称空间Bar。内部using语句引用Foo中的Bar。如果Foo中没有Bar,那么内部也会引用外部Bar。
编辑正如Jonathan指出的那样,内部使用可以改为`using global :: Bar;'来引用out Bar命名空间,这会破坏这个特定的代码,因为D试图使用C.
答案 4 :(得分:0)
这是MS推荐的做法。诸如stylecop之类的程序推荐它。
查看Is sa1200 All using directives must be placed inside the namespace (StyleCop) purely cosmetic?以进行更深入的讨论