クラスごとにファイルを分ける方法
- クラスが多くなってくるとファイルを分けた方がわかりやすい
- namespaceを使うと階層もわかりやすくなる
クラスごとにファイルを分ける
これまでは簡単なプログラムだったのもあり、一つのファイルで複数クラスを定義するサンプルにしてきました。
しかしプログラムが大きくなるにしたがって、一つのファイルで管理するとわかりにくくなってしまいます。
通常はクラスごとにファイルを分けて管理します。
追加インストールなしで、csc.exeを使用して複数ファイルをコンパイルする方法をご紹介します。
下記のようにProgram.csファイルとSampleClass.csにファイルを分けて保存します。
csc.exeを呼び出すときに「*.cs」を指定するようにします。
*はワイルドカードと言って「ここの部分は何でも良いよ」という意味になります。
従ってCompile.batは「同じフォルダの.csで終わるファイルをすべてコンパイルしてください」という意味になります。
class Program
{
static void Main()
{
SampleClass sample = new SampleClass();
sample.WriteHello();
System.Console.ReadKey(); // キー入力待ち
}
}
class SampleClass
{
public void WriteHello()
{
System.Console.WriteLine("こんにちは");
}
}
C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥csc.exe *.cs
pause
こんにちは
フォルダを分けてクラスを管理する
さらにクラスが多くなってくると階層で分けて管理した方がわかりやすくなります。
階層がわかりやすくなるように名前空間(namespace)で分けるようにします。
名前空間についてはC#の基本ルール[コンソールアプリ]を参照してください。
usingディレクティブについてもC#の基本ルール[コンソールアプリ]で説明しています。
using SampleProgram.SubClass; // namespace SampleProgram.SubClassを使用しますという意味のusingディレクティブ
namespace SampleProgram
{
class Program
{
static void Main()
{
SampleClass sample = new SampleClass();
sample.WriteHello();
System.Console.ReadKey(); // キー入力待ち
}
}
}
Program.csと同フォルダ内にSubClassフォルダを作って、その下に下記のファイルを保存します。
namespace SampleProgram.SubClass
{
class SampleClass
{
public void WriteHello()
{
System.Console.WriteLine("こんにちは");
}
}
}
Program.csと同フォルダ内に下記のファイルを保存します。
.batファイルでは^を付けることで「コマンドが次の行も続きます」という意味になります。
下記のサンプルでは、*.csとSubClass¥*csをコンパイル対象として指定しています。
C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥csc.exe ^
*.cs ^
SubClass¥*cs
こんにちは