c#使用语句放置

c#使用语句放置,c#,using-statement,C#,Using Statement,可能重复: 我正在查看一个代码库,其中作者(我尊敬的作者)始终将using语句放在名称空间内,而不是放在名称空间上方。这样做是否有一些优势(更高效的GC?),或者这只是一种代码风格偏好 干杯, Berryl如果在同一个文件中有多个名称空间,则将仅使用包含的名称空间,而不是整个文件中的所有名称空间 另请参见(刚刚找到这个很好的解释)不要在不使用“global::”的情况下将它们放在内部,否则您的代码将变得脆弱 namspace bar { using foo //this may mean

可能重复:

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

干杯,

Berryl

如果在同一个文件中有多个名称空间,则将仅使用包含的名称空间,而不是整个文件中的所有名称空间


另请参见(刚刚找到这个很好的解释)

不要在不使用“global::”的情况下将它们放在内部,否则您的代码将变得脆弱

namspace bar {
   using foo //this may mean "using global::bar.foo OR using global::foo"

}
参考文献


这是一种偏好,但在某些场景中,在内部和外部使用该语句时,会有语义上的差异

using Bar;

namespace Foo
{
    using Bar;

    namespace Bar
    {
        class C
        {
        }

    }

    namespace Baz
    {
        class D
        {
            C c = new C();
        }
    }
}

namespace Bar
{
    class E
    {
    }
}
在这种情况下,outerusing语句引用位于名称空间Foo之后的名称空间栏。内部using语句引用了Foo内部的Bar。如果Foo内部没有条,那么内部也会指外部条


编辑正如Jonathan指出的,内部用法可以更改为“使用全局::Bar;“要引用out-Bar名称空间,由于D试图使用C,它可能会破坏此特定代码。

这是MS推荐的做法。stylecop之类的程序会推荐它。”


查看更深入的讨论

Scott Hanselman在2008年7月做了一次回顾。我不知道这是否在.NET 4 framework中发生了变化,但它基本上归结为一个首选项问题,除非您将类命名为与现有类相同的名称,以及在一个文件中命名多个名称空间。

请参阅,这看起来像是一个重复的但是如果你坚持每个文件1类的原则,这是没有问题的。StyleCop不是Microsoft,它只是一个由Microsoft的几个人编写的工具。实际上,这几乎从来都不是一个问题。人们通常不会在名称空间中产生奇怪的冲突。我在现实生活中从未被这个问题困扰过。我怀疑与你一起工作的开发人员比我们其他人处理的要复杂一点。即使如此,我们最终还是同时得到了System.Data和System.Windows.Data,这确实扰乱了VB导入规则。