4

タイトルの通り、ちょっと前にこれを見たときはC#のコードを見ていたと思うのですが、あまり気にしたことはありませんでしたが::、C#で何を意味するのでしょうか。のようなものを見たと思いますmyVar::Process.Start()

4

3 に答える 3

11

これは名前空間エイリアス修飾子です - 名前空間エイリアスを使用する場合:

using config = System.Configuration;

...

var value = config::ConfigurationManager.AppSettings["Somthing"];

同じスコープに同じ名前の型がある場合に、あいまいさを解消するのに役立ちます。

たとえば、複数のLegクラス (1 つは家具用、もう 1 つは旅の行程用) があり、両方がインポートされた名前空間にある場合Leg、コードで を使用すると、コンパイラはどちらを意味するかを判断できません。名前空間への名前空間エイリアスがある場合は、使用<alias>::Legして、意味する正確なタイプを参照できます。

グローバル名前空間にはデフォルトのエイリアスがあります。 global

于 2012-08-08T18:10:16.733 に答える
9

それはドキュメントにあります:

名前空間エイリアス修飾子 (::) は、識別子の検索に使用されます。次の例のように、常に 2 つの識別子の間に配置されます。

global::System.Console.WriteLine("Hello World");

方法: Namespace Alias Qualifier を使用する (C# プログラミング ガイド)もおそらく役に立ちます。

于 2012-08-08T18:08:26.137 に答える
1

下位の名前空間に、別の名前と同じ名前のメソッドまたはプロパティがある場合は、::を使用します。例えば:

namespace Taylor 
{ 
 public Console {get; set;}
}

Console.WriteLine();を使いたいとしましょう。

を使用せずに、デフォルトでは、 それが指しているという理由だけglobal::System.Console.WriteLine(); で使用する予定ですTaylor.Consolethis

基本的に、名前空間を指定した名前空間に区別します。最も一般的なもの: global(最低レベル)。

とにかく System.Console がそれを指しているので、この例は少し冗長です。::Oded の例を見ると、それを動的に使用しながら使用する方法に光が当てられます。

于 2012-08-08T18:37:48.257 に答える