名前空間とディレクティブ
CoddyのC#ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 2/70。
名前空間はコードを整理し、名前の衝突を防ぎます。フォルダがファイルを整理するように、関連するクラスをグループ化します。
名前空間内にクラスを作成する
namespace MyApp.Models
{
public class User
{
public string Name { get; set; }
public User(string name)
{
Name = name;
}
}
}別の名前空間のクラスにアクセスするには、using ディレクティブを使用します
using System;
using MyApp.Models;
class Program
{
static void Main()
{
User user = new User("Alice");
Console.WriteLine(user.Name);
}
}出力:
Aliceusing ディレクティブがない場合、完全修飾名を使用する必要があります。
MyApp.Models.User user = new MyApp.Models.User("Bob");using ディレクティブを使用すると、名前空間の完全なパスを毎回入力しなくても、その名前空間内の型を参照できるようになります。System は、Console のような基本的なクラスを含む一般的な名前空間です。
チャレンジ
中級MyApp.Models名前空間にUserクラスがあります。完全修飾名を使わずにUserクラスを使用するために、Program.csに正しいusingディレクティブを追加してください。
チートシート
名前空間は、関連するクラスをグループ化することでコードを整理し、名前の衝突を防ぎます。
名前空間内にクラスを作成します:
namespace MyApp.Models
{
public class User
{
public string Name { get; set; }
public User(string name)
{
Name = name;
}
}
}別の名前空間のクラスにアクセスするには、using ディレクティブを使用します:
using System;
using MyApp.Models;
class Program
{
static void Main()
{
User user = new User("Alice");
Console.WriteLine(user.Name);
}
}using ディレクティブを使用しない場合は、完全修飾名を使用します:
MyApp.Models.User user = new MyApp.Models.User("Bob");System 名前空間には、Console のような基本的なクラスが含まれています。
自分で試してみよう
using System;
// TODO: MyApp.Models の using ディレクティブを追加する
class Program
{
static void Main()
{
string userName = Console.ReadLine();
// TODO: userName を使用して User オブジェクトを作成する
// TODO: "User created: " に続けてユーザーの Name を表示する
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。