【C#】名前空間(namespace) と using とは

C#における「namespace(名前空間)」はコードの組織化と識別子(クラス、メソッド、変数など)の重複を避けるための仕組みです。名前空間はC#プログラム内でコードをカテゴリ分けし、コードの整理、識別子の一意性の確保、およびコードの再利用を容易にします。

また using は名前空間のエイリアスを宣言するための機能であるため、namespaceとあわせて覚えておくとよいでしょう。この記事ではnamespaceとusingについてサンプルも交えながら解説していきます。

namespaceとは

C#のプログラム構成は外側から名前空間(namespace)、クラス、メソッド、変数と続きます。namespace は一番外側にいるため、プログラムは namespace に属していることになります。namespaceは、各プログラムがどこに属しているのかを示しており、他の名前空間やほかのクラスと区別するための記述方法と言えます。

namespaceの使い方

namespace は以下のようにプログラム内で使用することが出来ます。

namespace MyNamespace
{
    // 名前空間内のクラスやメソッドを定義
    class MyClass
    {
        // クラスのメンバー
    }

    class AnotherClass
    {
        // 別のクラスのメンバー
    }
}

上記の例では MyNamespace という名前空間内にクラス MyClass と AnotherClass が含まれていますが、この2つのクラスは MyNamespace に属するクラスであることを示しています。namespace を使用することで、他の名前空間との競合を避けることができ、クラスやメソッドを一意に識別できるようになるのです。

namespace の特徴

namespace はプログラムの構成要素を識別するために使われています。その特徴をまとめると以下のように言うことができるでしょう。

  • コードの組織化: 名前空間は、関連するクラス、構造体、列挙型、およびメソッドをまとめてグループ化するために使用されます。これにより、コードが論理的に整理され、メンテナンスが容易になります。
  • 識別子の一意性: 名前空間は、同じ名前のクラスやメソッドが異なる名前空間内で共存できるようにするために役立ちます。これにより、プログラム内での識別子の重複を回避できます。
  • コードの再利用: 外部ライブラリや他の名前空間からクラスや関数をインポートすることにより、外部のコードを再利用できます。名前空間を使用することで、異なるプロジェクトやアセンブリ間でコードを共有できます。

普段、あまり意識をせず使っている namespace ですが、大規模なプロジェクトやライブラリの開発、コードの整理、識別子の一意性の確保など、C#プログラミングにおいて重要な役割を果たしている構文なのです。

using とは

名前空間である namespace については上記で解説しました。それに対してusing はどんな役割をしているのかというと、現在のプログラム内で使用する namespace を宣言するための構文になります。例えば以下の例。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("Hello, C#!");
    }
}

classのうえで using System; を宣言していますが、これを行うことで System の namespace に属するクラスにアクセスすることが出来るようになります。Console は System に属しているクラスの名称なのです。

このように、using ディレクティブは、別の名前空間を簡単に参照するためのエイリアスを作成することができます。これによって名前空間内のクラスやメンバーにアクセスするときに、完全な名前を入力する手間を省くことが可能となります。