名前空間エイリアス修飾子演算子(::演算子)
ASP.NETのWebFormデザイナが生成したソースコードを見てみると、そこには見慣れない(というか、WindowsFormsのコードビハインドでは見たことが無い)修飾子によりSystem.Web.UI名前空間のコンポーネントが定義されていた。
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
protected global::ってなんだ? とhelpで"global"と入力しても、Google等で検索しても引っかからない。
すわ、まだ知らない記述子があったのかと思ったが、正体はこれだった。
名前空間エイリアス修飾子 (::) を使用して識別子を検索できます。この例に示すように、常に 2 つの識別子の間に配置します。
MSDN ライブラリィ C# リファレンス
コードの記述の中で、強制的にグローバル名前空間を参照する際に使用する記述方法だ。
解説によると
名前空間エイリアス修飾子として global を指定できます。これにより、エイリアスを使用した名前空間ではなく、グローバル名前空間で検索が実行されます。
とあるが、実際のところ"global"以外は使わないのだしこれ以外指定できないのにどうしてこういう書き方なんだろう。予約語のように後で"global"以外の別な修飾子が追加されるのだろうか。
追記:
青柳さんにコメント頂いた。エイリアス修飾子は別にglobalに限ったことではなく、自分が定義したエイリアスも記述できるのだそうだ。