C# using语句的位置安排

4

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

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

谢谢,
Berryl


请参见https://dev59.com/UXM_5IYBdhLWcg3whznx - wsanville
看起来像是一个重复的问题,与https://dev59.com/L3VC5IYBdhLWcg3w-mdO相同。 - allonym
5个回答

2

实际上,在实践中,这几乎不是一个问题。人们通常不会创建具有奇怪冲突的命名空间。我在现实生活中从未遇到过这种情况。 - Eric Lippert
2
我怀疑你与合作的开发人员比我们其他人接触到的那些要高级一点。即使如此,我们最终还是同时使用了System.Data和System.Windows.Data,这真的会对VB的导入规则造成混乱。 - Jonathan Allen

1

2
但是,如果你遵循每个文件一个类的准则,这就不是问题了。 - Anthony Pegram

1

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


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,那么内部的 using 语句也会引用外部的 Bar。
编辑:正如 Jonathan 指出的那样,内部的 using 语句可以改为 `using global::Bar;" 来引用外部的 Bar 命名空间,但由于 D 尝试使用 C,这将导致特定代码出现问题。

0

StyleCop不是微软公司,它只是由微软的几个人编写的工具。 - Jonathan Allen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接