Amazonでお得な買い物

【C#】名前空間(ネームスペース)の使い方を学ぶ

C# 名前空間(ネームスペース)

今回はC#の名前空間(name space)について解説していきます。

目次
スポンサーリンク

名前空間(name space)って何?

名前空間は「name space(ネームスペース)」と呼ばれ、クラスを種類ごとに分けて管理するための機構です。

例えば、写真データをフォルダごとに分けて管理するのと同じ考え方になります。

名前空間の基礎

名前空間を定義するためにはnamespaceというキーワードを使用します。

C#で新しいプロジェクトを作る際には自動的に作られるので意識する機会がないかもしれません。

namespace NamespaceTest // NamespaceTest という名前空間
{
    // その中にクラスを置く
    class X { }
}

また、usingキーワードは名前空間の上に配置され、フルネームで書かなくてもパスを通せる機構になります。

ちなみに、名前空間に含まれない一番上の部分をグローバル名前空間(global namespace)と呼びます。

// グローバル名前空間(global namespace)

namespace NamespaceTest 
{
    // 名前空間の中
}

名前空間を使いこなす

それでは、名前空間をnamespaceキーワードを使って定義・参照していきます。

名前空間の定義

名前空間を使うために以下のような構成を考えてみます。

Yuyu --+-- Int                       (整数クラス)
       |
       +-- Collections --+-- List    (リストクラス)
       |                 |
       |                 +-- Vector  (可変長配列クラス)
       |
       +-- Drawing --------- Image   (画像クラス)

namespaceキーワードを使うとこのように表現できます。

namespace Yuyu
{
  class Int{// Int の内容}

  namespace Collections
  {
    class List{// List の内容}

    class Vector{// Vector の内容}
  }

  namespace Drawing
  {
    class Image{// Image の内容}
  }
}

名前空間を定義するためにnamespaceキーワードを使い、以降{}で囲った中で定義したクラスや名前空間が対象になります。

また、次のように表現することもできます。フォルダ構成では\を使いますが、C#では.を使います。

namespace Yuyu
{
  class Int{// Intの内容}
}

namespace Yuyu.Collections
{
  class List{// List の内容}
}

namespace Yuyu.Collections
{
  class Vector{// Vector の内容}
}

namespace Yuyu.Drawing
{
  class Image{// Image の内容}
}

名前空間の参照

.を使うことで各クラスのインスタンスを生成することで名前空間を参照することができます。

class NameSpaceTest
{
  static void Main()
  {
    Yuyu.String str = new Ufcpp.Int(100);

    Yuyu.Collections.List list = new Yuyu.Collections.List();
    Yuyu.Collections.Vector vec = new Yuyu.Collections.Vector();

    Yuyu.Drawing.Image image = new Yuyu.Drawing.Image("sample.png");
  }
}

Yuyu.Collections.Listのような名前空間を全て指定した形式の名前を完全修飾名(fully qualified name)と呼びます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の精密機器を作っている会社に勤務している14年目のエンジニアです。趣味は美味しいものを食べることとゴルフ。プログラムについて今まで学んだことをわかりやすく発信するサイトを目指しています。

コメント

コメントする

目次