タイトルの通り、ちょっと前にこれを見たときはC#のコードを見ていたと思うのですが、あまり気にしたことはありませんでしたが::
、C#で何を意味するのでしょうか。のようなものを見たと思いますmyVar::Process.Start()
3 に答える
これは名前空間エイリアス修飾子です - 名前空間エイリアスを使用する場合:
using config = System.Configuration;
...
var value = config::ConfigurationManager.AppSettings["Somthing"];
同じスコープに同じ名前の型がある場合に、あいまいさを解消するのに役立ちます。
たとえば、複数のLeg
クラス (1 つは家具用、もう 1 つは旅の行程用) があり、両方がインポートされた名前空間にある場合Leg
、コードで を使用すると、コンパイラはどちらを意味するかを判断できません。名前空間への名前空間エイリアスがある場合は、使用<alias>::Leg
して、意味する正確なタイプを参照できます。
グローバル名前空間にはデフォルトのエイリアスがあります。 global
それはドキュメントにあります:
名前空間エイリアス修飾子 (::) は、識別子の検索に使用されます。次の例のように、常に 2 つの識別子の間に配置されます。
global::System.Console.WriteLine("Hello World");
方法: Namespace Alias Qualifier を使用する (C# プログラミング ガイド)もおそらく役に立ちます。
下位の名前空間に、別の名前と同じ名前のメソッドまたはプロパティがある場合は、::を使用します。例えば:
namespace Taylor
{
public Console {get; set;}
}
Console.WriteLine();を使いたいとしましょう。
を使用せずに、デフォルトでは、 それが指しているという理由だけglobal::System.Console.WriteLine();
で使用する予定ですTaylor.Console
this
基本的に、名前空間を指定した名前空間に区別します。最も一般的なもの: global
(最低レベル)。
とにかく System.Console がそれを指しているので、この例は少し冗長です。::
Oded の例を見ると、それを動的に使用しながら使用する方法に光が当てられます。