2009-03-12 4 views
3

次のようにメモリ使用量は同じですか?外部名前空間内のメソッド/変数を参照することは、それを完全に含めるよりもメモリ効率が良いですか?

using System.Threading; 
... 
Thread.Sleep(500); 

System.Threading.Thread.Sleep(500); 

私はあなたがメモリ内でより良い「を使用して」している以下の名前空間と思っているだろうが、私は前者の例は、メモリに名前空間をロードするために持っていると聞きました関係なく。私はSleepがメモリ不足の方法の最良の例ではないことを知っていますが、それは単なる例です。

答えて

8

usingステートメントは、何もロードされないようにするだけで、クラスを探す場所をコンパイラに通知します。

この2つの例はまったく同じコードを生成します。

+0

ありがとう! –

2

"using"ステートメントをインクルードの意味でプレーンCで曖昧にすることはできません - CLRコードがコンパイルされると、実際には使用されていない指定された名前空間は無視されますアセンブリ。

using文がためのものです:それは簡単に、開発者がクラスを宣言するために作る(Guffaで述べたように)クラスを探すようにコンパイラに伝える

  • は - 完全に入力する必要が想像します

コンパイラはそれを最適化する責任がありますが、何も心配する必要はありません。

3

コンパイル時には、他のポストと同じように、2つのものはまったく同じILを生成します。

ただし、違いがあります。最初のオプションは、コンパイラに明示的にクラス/メソッド/構造体/ etcのどこに行くかを知らせる。 2番目のオプションには、コンパイラの検索する名前空間のリストへの名前空間(System.Threading)が含まれます。

ステートメントの使用に多くの名前空間があると、コンパイラーはこのファイルをコンパイルするのに時間がかかります。 C#では、これはおそらくあなたが心配していたものではないでしょう。なぜなら、コンパイラは非常に速いですが、遅くなるからです。

非常に大きなプロジェクトと非常に大きな名前空間(これは他の理由ではあまり良い考えではありません)では、これは目立つことがあります(まだ微妙ですが)。

関連する問題