名前空間のエイリアス
名前空間 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
usingキーワードを使って名前空間のエイリアスを定義することができます。
// SystemのエイリアスとしてSを定義 using S = System; class Program { static void Main() { // S経由でアクセスできる S.Console.WriteLine( "foo" ); } }
また既存のクラス名とエイリアス名が同じ場合、「.」で呼び出すとクラスが優先されてしまいます。
// Sという名前空間のエイリアス using S = System; class Program { // Sというクラスの定義 class S {} static void Main() { // S.だとクラスの方が優先されるためコンパイルエラーとなる S.Console.WriteLine( "foo" ); } }
$ csc main.cs Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1 Copyright (C) Microsoft Corporation. All rights reserved. main.cs(9,5): error CS0117: 'Program.S' に 'Console' の定義がありません。
これを回避するためには「::」を使ってSがエイリアスの方だよと明示する必要があります。
using S = System; class Program { class S {} static void Main() { // S::にすればエイリアス指定となる S::Console.WriteLine( "foo" ); } }
$ main foo
これをエイリアス修飾子と言うそうです。
あと外部エイリアスってものあるみたいですが、これはまぁこういうのもあるということで覚えておきましょう。