クラスの整理に便利な「namespace(名前空間)」とは?
C#の namespace(名前空間) は、クラス・構造体・列挙体・インターフェース・デリゲート などをグループ化して整理する仕組みです。
名前が重なったときにも、区別(スコープ分け)ができるため、規模が大きいプログラムでは特に重要です。
基本構文
namespace 名前空間名 {
// クラスやその他の型
public class クラス名 {
// メンバー定義
}
}
例:MyAppという名前空間の中にクラスを定義
namespace MyApp {
public class Person {
public string Name;
}
}
他のファイルや名前空間から使うには?
using MyApp;
class Program {
static void Main() {
Person p = new Person(); // MyApp.Person を省略して使える
}
}
フルネームでの利用(usingなし)
MyApp.Person p = new MyApp.Person();
名前の重複を防げる
namespace A {
public class Sample {
public void Show() => Console.WriteLine("AのSample");
}
}
namespace B {
public class Sample {
public void Show() => Console.WriteLine("BのSample");
}
}
class Program {
static void Main() {
A.Sample a = new A.Sample();
B.Sample b = new B.Sample();
a.Show(); // → AのSample
b.Show(); // → BのSample
}
}
ネストされた名前空間
namespace MyApp.Utilities.Text {
public class TextHelper {
public static void Format() { }
}
}
C# 10 以降の簡略構文(file-scoped namespace)
1ファイル1名前空間なら、次のように書くこともできます:
namespace MyApp.Services;
public class AuthService {
// ...
}
まとめ
namespace(名前空間)は、関連するクラスや機能をグループ化し、他と区別するための仕組みです。
using
と組み合わせることで、コードの可読性と拡張性を高めることができます。
名前の衝突を避けるためにも、プロジェクトや機能ごとに名前空間を整理する習慣をつけましょう!