重複の可能性:
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 のスコープを設定します。
また、参照してください(この良い説明が見つかりました)「using」ステートメントは名前空間の内側または外側にある必要がありますか?
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.
これは好みの問題ですが、一部のシナリオでは、ステートメントを内側と外側で使用すると意味的な違いがあります。
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 を使用しようとしているために、この特定のコードを壊してしまう可能性があります。
これは、MS が推奨する方法です。stylecop などのプログラムが推奨しています。
Is sa1200 All using ディレクティブは名前空間 (StyleCop) 内に配置する必要がありますか? より深い議論のために