可能重复:
Usings 应该在命名空间内部还是外部
我正在查看一个代码库,其中作者(我尊重的人)始终将 using 语句放置在命名空间内,而不是在其上方。这样做有什么优势(更高效的 GC?)还是这只是代码风格偏好?
干杯,
贝里尔
可能重复:
Usings 应该在命名空间内部还是外部
我正在查看一个代码库,其中作者(我尊重的人)始终将 using 语句放置在命名空间内,而不是在其上方。这样做有什么优势(更高效的 GC?)还是这只是代码风格偏好?
干杯,
贝里尔
切勿在不使用“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
如果您在同一个文件中有多个命名空间,那么您将只将 usings 范围限定为包含命名空间,而不是整个文件中的所有命名空间。
另请参阅(刚刚找到这个很好的解释)“使用”语句应该在命名空间内部还是外部?
Scott Hanselman在 2008 年 7 月发表了一篇关于此的文章。我不知道这是否随着 .NET 4 框架而改变,但它基本上归结为一个偏好问题,除非您将类命名为与现有类相同以及单个文件中的多个命名空间。
这是一种偏好,但在某些情况下,当您在内部和外部使用语句时存在语义差异。
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。
编辑正如乔纳森指出的那样,内部 using 可以更改为 `using global::Bar;" 以引用 out Bar 命名空间,由于 D 试图使用 C,这可能会破坏此特定代码。
这是 MS 推荐的做法。stylecop 等程序推荐它。