2013-03-13 7 views
5

C#では、名前空間にusing directiveを追加すると、その特定の名前空間のすべての型にアクセスできます。しかし、名前空間に多くの型があり、特定のものが1つだけ必要な場合は、完全に修飾された名前を使用して、使用したくない不要なクラスを使用したくないと思うことがよくありますその名前空間には多くのものがあります)パフォーマンスの理由でです。私はパフォーマンスに影響を与えなければならないと考えていました(たとえどんなに時間がかかっても)、そうではなく、それを利用可能にすることができました。 (実際にあれば)。もしそうなら、その場全体をこのようにすることは悪い習慣になるでしょうか?それで目立つようなもの(パフォーマンス上の賢明なもの)に蓄積しないでしょうか?C#では、 'using'ディレクティブと完全修飾名を使用する方がパフォーマンスが良いですか?

usingディレクティブと完全修飾名の使用については、other SO postが表示されていましたが、パフォーマンスに関しては記載されていません。

+2

ディレクティブを使用して追加しても、実行時のパフォーマンスには影響しません。 http://stackoverflow.com/questions/14580606/performance-impact-of-unused-using-directives-in-c-sharp – Sam

+0

私は確かではない、多分唯一の構文糖の問題? –

答えて

16

usingディレクティブは、コンパイル時に消える構文糖だけです。名前空間がusingを介して含まれているか、完全修飾型名に記述されているかどうかは、結果のバイトコードとはまったく関係ありません。したがって、どちらか一方を使用することにより、実行時にパフォーマンス上の利点はありません。

7

違いはありません。かもしれない

それは(MSBuildのを実行しているときのように)コンパイラの性能に(すなわち、おそらく測定可能ではない)はほとんど影響/利点を持っていますが、それはコードの中で焼いていますよう、実行時にILは、明示的に、意図されたタイプを知っています型ハンドルとして使用します。リフレクションが使用されていない限り、タイプの「検索」はありません。

+2

マイナーな用語ですが、私はそれが "明示的に"指定されたタイプを知っていると言いたいと思います... –

+0

ええ、良い点 –

3

私は言う必要があります。 コンパイラは同じILコードを生成しますので、心配する必要はありません。

0

ちょうどそれに依存します。

usingディレクティブを使用すると、コードをより速く書くのに役立ちます。 しかし、同じ名前を持ち、同じシグネチャを持つメソッドを持つusingディレクティブを使用する2つの名前空間などがある場合は、問題が発生します。

完全修飾リファレンスを使用すると、コードを理解しやすくなります。

+1

私の答えを落とす理由を述べてください:) –

関連する問題