C#のネストされた名前空間とは?入れ子構造のnamespaceの基本と使い方を解説
C#において、名前空間(namespace)の中にさらに別の名前空間を定義したものを「ネストされた名前空間(入れ子の名前空間)」と呼びます。ネストされた名前空間を活用することで、コードを論理的かつ階層的に整理でき、大規模なプロジェクトでも可読性と保守性の高い構造を実現できます。
ネストされた名前空間の基本構造
まず、外側の名前空間を定義します。
namespace outer {}この外側の名前空間の中に、内側の名前空間を定義します。以下の例では、outer 名前空間の中に inner 名前空間を作成し、その中にクラスを配置しています。
namespace inner {
public class innerClass {
public void display() {
Console.WriteLine("Inner Namespace");
}
}
}ネストされた名前空間のメソッドを呼び出す方法
内側の名前空間にあるクラスのメソッドを呼び出すには、内側のクラスのオブジェクトを生成し、そのメソッドを呼び出します。以下の完全なサンプルコードでは、外側の名前空間の Program クラスから、内側の名前空間に属する innerClass の display() メソッドを呼び出しています。
using System;
namespace outer {
class Program {
static void Main(string[] args) {
// 内側の名前空間のクラスは、外側からそのまま参照できる
innerClass cls = new innerClass();
Console.WriteLine("Welcome!");
// 外側の名前空間のメソッドを呼び出し
display();
// 内側の名前空間のクラスのメソッドを呼び出し
cls.display();
Console.ReadLine();
}
public static void display() {
Console.WriteLine("Outer Namespace");
}
}
// 外側の名前空間の中に内側の名前空間を定義
namespace inner {
public class innerClass {
public void display() {
Console.WriteLine("Inner Namespace");
}
}
}
}実行結果
Welcome! Outer Namespace Inner Namespace
補足:C# 10以降のファイルスコープ名前空間
C# 10以降では、ファイル全体に適用される「ファイルスコープ名前空間」(namespace outer; のようにセミコロンで宣言する形式)が利用できます。ただし、ネストされた名前空間を定義する場合は、従来どおりブロック形式(波括弧 {})で記述する必要があります。階層的なコード整理を行いたい場面では、ネストされた名前空間が依然として有効な手段です。
-
C#の名前空間(namespace)とは?定義方法と基本的な使い方を解説
名前空間とは名前空間(namespace)とは、ある一連の名前を別の一連の名前から分離して管理するための仕組みです。大規模なプロジェクトでは、複数の開発者が同じ名前のクラスやメソッドを作成することがあり、名前の衝突(コンフリクト)が発生する可能性があります。名前空間を使うことで、こうした衝突を防ぎ、コードを論理的に整理できます。また、.NET Framework が提供する System なども名前空間の一つであり、標準ライブラリの機能はすべて名前空間によって分類・管理されています。名前空間の定義方法名前空間の定義は、namespace キーワードで始まり、その後に名前空間名を続けて記述します
-
Pythonの名前空間(namespace)とは?仕組みとスコープの関係をわかりやすく解説
Pythonにおける名前空間とは名前空間(namespace)は、変数名の「スコープ」を実現するための仕組みです。Pythonでは、パッケージ、モジュール、クラス、関数、メソッドといったそれぞれの単位が固有の名前空間を持ち、その中で変数名が解決されます。名前空間の生成と破棄関数やモジュール、パッケージが評価されて実行を開始すると、それに対応する新しい名前空間が生成されます。これは一種の「評価コンテキスト」と考えると理解しやすいでしょう。そして、関数などの実行が終了すると、その名前空間は破棄され、そこに含まれていた変数も一緒に消えます。名前の検索順序変数名は、まずローカルな名前空間(関数の本体や