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 のスコープを設定します。

また、参照してください(この良い説明が見つかりました)「using」ステートメントは名前空間の内側または外側にある必要がありますか?

于 2010-06-05T01:00:39.950 に答える
1

Scott Hanselman did a post about this back in July 2008. I don't know if this changed with the .NET 4 framework, but it basically came down to being a preference issue unless you're naming your classes the same as existing classes as well as multiple namespaces in a single file.

于 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 も参照します。

編集そして、Jonathan が指摘するように、内側の using を「using global::Bar;」に変更して out Bar 名前空間を参照することができます。これは、D が C を使用しようとしているために、この特定のコードを壊してしまう可能性があります。

于 2010-06-05T01:08:05.490 に答える
0

これは、MS が推奨する方法です。stylecop などのプログラムが推奨しています。

Is sa1200 All using ディレクティブは名前空間 (StyleCop) 内に配置する必要がありますか? より深い議論のために

于 2010-06-05T01:08:51.040 に答える