4

可能重复:
Usings 应该在命名空间内部还是外部

我正在查看一个代码库,其中作者(我尊重的人)始终将 using 语句放置在命名空间内,而不是在其上方。这样做有什么优势(更高效的 GC?)还是这只是代码风格偏好?

干杯,
贝里尔

4

5 回答 5

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

于 2010-06-05T01:04:32.380 回答
1

如果您在同一个文件中有多个命名空间,那么您将只将 usings 范围限定为包含命名空间,而不是整个文件中的所有命名空间。

另请参阅(刚刚找到这个很好的解释)“使用”语句应该在命名空间内部还是外部?

于 2010-06-05T01:00:39.950 回答
1

Scott Hanselman在 2008 年 7 月发表了一篇关于此的文章。我不知道这是否随着 .NET 4 框架而改变,但它基本上归结为一个偏好问题,除非您将类命名为与现有类相同以及单个文件中的多个命名空间。

于 2010-06-05T01:10:30.053 回答
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。

编辑正如乔纳森指出的那样,内部 using 可以更改为 `using global::Bar;" 以引用 out Bar 命名空间,由于 D 试图使用 C,这可能会破坏此特定代码。

于 2010-06-05T01:08:05.490 回答
0

这是 MS 推荐的做法。stylecop 等程序推荐它。

签出sa1200 所有 using 指令都必须放在命名空间 (StyleCop) 内纯粹是装饰性的吗?进行更深入的讨论

于 2010-06-05T01:08:51.040 回答