

通常、usingディレクティブはnamespaceの外（ファイル先頭）に記述しますが、StyleCopを使用すると以下の警告が発生します。この意味を教えてください。

[code]

    SA1200 : CSharp.Ordering : All using directives must be placed inside of the namespace.
    
[/code]


CC BY-SA 4.0
2015-02-18T20:36:42.920
6710
2022-06-06T00:19:31.643
2022-06-06T00:19:31.643
3060
5987
question
c# visual-studio
StyleCopのSA1200の意味を教えてください


SA1200は次の２つの理由から警告の対象となっています。

>   1. Placing using-alias directives within the namespace eliminates compiler
> confusion between conflicting types.
>   2. When multiple namespaces are defined within a single file, placing
> using directives within the namespace elements scopes references and
> aliases.
>

詳しくは[StyleCopt
SA1200](http://www.stylecop.com/docs/SA1200.html)のドキュメントを参照してください。


CC BY-SA 3.0
2015-02-18T21:07:07.697
6712
2015-02-18T21:07:07.697
4236
6710
answer


次のBlog記事で取り上げられているようなusingでエイリアスを使い、そのエイリアスと同じ名前の方がnamespaceないで使用されても、そのエイリアスがnamespaceの外にあった場合コンパイルエラーにならずバグが発見されないという問題もあるため、コンパイラがこのバグを見つけられるようにする目的があると思います。

[Stylistic differences in using - I know the answer (it's 42) - Site Home -
MSDN
Blogs](https://web.archive.org/web/20151223110758/http://blogs.msdn.com:80/b/abhinaba/archive/2006/08/21/709051.aspx)

ただ、最近のMSがOSSとして公開しているコードでもこのルールが適応されているコードはあまり見掛けないので、このルールはそっと外してしまっても良いかなと思っています。

ただ、usingでエイリアスを多用するコーディングスタイルを取る場合には設定しておいた方が無難かもしれません。


CC BY-SA 4.0
2015-03-04T05:46:33.883
7420
2022-06-05T09:38:36.090
2022-06-05T09:38:36.090
19769
2362
6710
answer