C# ではusing
ディレクティブを使用することで、名前空間の指定が省略可能になります。
以下コード内で使用している List<int>
は、本来使用する際に System.Collections.Generic.List<int>
と記述する必要がありますが、using
で定義しているため省略可能です。
using System.Collections.Generic;
public class SampleClass
{
void Start()
{
var list = new List<int>();
// var list = new System.Collections.Generic.List<int>();
}
}
using
の用途はこれだけでなく、エイリアスを定義するのにも使われます。
目次
エイリアスとは?
C# でのエイリアスとは、クラスや名前空間に別名を付けられる修飾子のことです。
using
でエイリアスを定義することで、クラスや名前空間を別名に置き換えることができます。
以下コード内ではusing
を使い、名前空間である MyNameSpace.Common.UI
を CommonUI
として定義しています。その結果 SampleClass
内で TestUI
クラスの Draw()
を呼びだしたい時はCommonUI.TestUI.Draw();
と省略して記載できます。
using CommonUI = MyNameSpace.Common.UI;
namespace MyNameSpace.Common.UI
{
public static class TestUI
{
public static void Draw()
{
// 省略
}
}
}
public class SampleClass
{
void Start()
{
CommonUI.TestUI.Draw();
}
}
「エイリアス修飾子(::)」で同名を区別する
クラス名や名前空間とエイリアス名が同名の場合、コード側ではどちらを優先していいか分からずエラーになります。
その際、エイリアス修飾子 ::
を使うことによりエラーが解決できます。エイリアス修飾子 ::
を使用したコードはエイリアスの方を参照します。
以下のコード内ではエイリアスとして「S」を定義し、クラス名にも「S」がある状態です。S::
と記載することでエイリアスの「S」の方が参照されるようになります。
using S = System;
public class S {}
public class Sample
{
public static void Main(string[] args)
{
S::Console.WriteLine("Test"); // エイリアスの「S」を参照
}
}
「global エイリアス」で同名を区別する
global エイリアスを使うことで、グローバル名前空間から参照することを強制します。
グローバル名前空間とは最上位の名前空間のことです。例えば、名前空間を定義しないSample
クラスはグローバル名前空間に属することになります。
// グローバル名前空間内のクラス
public class MyClass { }
先程紹介したエイリアス修飾子 ::
はエイリアスの方を参照しましたが、global エイリアスを使えばクラス名を参照することができます。記載する際は global::
と書いて使用します。
using S = System;
public class S {}
public class Sample
{
public static void Main(string[] args)
{
var s = new global::S(); // クラス名の「S」を参照
}
}
参考資料
- :: 演算子 (C# リファレンス) | Microsoft DOCS
- [C#] エイリアスでクラスや名前空間に別名を付ける方法 | Web備忘録