4

理論的な質問:これを行うことの違いはありますか:

using System;
...
var foo = new String("foo");

この:

var foo = new System.String("foo");

DLLのロード?性能差?

主に、私の疑問は、この状況でのコードのベストプラクティスは何ですか?

4

4 に答える 4

9

いいえ、完全に同一の IL にコンパイルされます。

usingディレクティブ(「名前空間アクセサー」という用語はありません) は、単純な名前を完全修飾名に解決しようとするときに、その名前空間を調べる必要があることを C# コンパイラに伝える方法にすぎません。

(もちろんString(String)、.NET にはコンストラクターがないため、どちらも実際にはコンパイルに失敗しますが、それは別の問題です。)

組み込みのエイリアスを使用することは、タイプstringを使用することと同じであることに注意してくださいSystem.String。これは実際には単なるエイリアスです。例えば:

// Just one type!
string x = new String(new char[10]);
于 2013-10-30T17:49:58.947 に答える
5

同じこと。もっと好きな方を使ってください。を使用しusing、名前の衝突が発生したときにフル ネームにフォールバックします。

于 2013-10-30T17:50:05.903 に答える
1

他の人が言ったように、パフォーマンス上の利点はありません。using を使用しないことの利点の 1 つは、名前空間のあいまいさを回避できることです。2 つの異なるタイプのページがあり、1 つはサイトのページを参照し、もう 1 つは本のページを参照しているとします。これらは、異なるプロパティを持つ 2 つの個別のオブジェクトです。この場合、参照しているページのタイプを区別できるように、名前空間全体を書き出す必要があります。

于 2013-10-30T17:56:26.413 に答える