16

C# では、名前空間のusingディレクティブを追加すると、その特定の名前空間内のすべての型にアクセスできるようになります。ただし、名前空間に多くのタイプがあり、特定の 1 つだけが必要な場合は、使用しないことがわかっている不要なクラスを使用可能にしたくないと考えて、完全修飾名を使用することがよくあります (特にパフォーマンス上の理由から、その名前空間には多くのものがあります。それらを利用できるようにするには、利用できないのではなく、パフォーマンスに何らかの影響を与える必要があると考えていましたが (どんなに些細なことでも)、どれくらいですか? (実際にある場合)。もしそうなら、これを至る所で行うのは悪い習慣でしょうか?

ディレクティブと完全修飾名の使用に関する他のSOの投稿を見ましたが、パフォーマンスについては言及していませんでした。using

4

4 に答える 4

28

ディレクティブは、usingコンパイル中に消えるシンタックス シュガーにすぎません。using名前空間が完全修飾型名を介して含まれているか言及されているかどうかは、結果のバイトコードにはまったく関係ありません。したがって、どちらを使用しても実行時のパフォーマンスは向上しません。

于 2013-03-13T17:53:13.537 に答える
7

違いはありません。

(msbuild を実行するときのように) コンパイラのパフォーマンスに与える影響や利点は無視できる (つまり、おそらく測定できない)かもしれませんが、実行時に IL は目的の型を明示的に認識します。これは、型ハンドルとしてコードに組み込まれているためです。リフレクションが使用されていない限り、タイプの「検索」はありません。

于 2013-03-13T17:53:07.247 に答える
3

いいえ、言わなければなりません。コンパイラーは同じILコードを生成するので、それについて心配する必要はありません。

于 2013-03-13T17:54:19.267 に答える
0

それはただ依存します。

using ディレクティブを使用すると、コードをより速く記述できます。ただし、同じ名前と同じ署名を持つメソッドを持つ using ディレクティブを使用する 2 つの名前空間がある場合、問題が発生します。

完全修飾参照を使用すると、コードがより理解しやすくなります。

于 2013-03-13T17:56:10.793 に答える