プログラミングを試してみたい人向けのC#プログラミングチュートリアル

クラスごとにファイルを分ける方法

POINT
  • クラスが多くなってくるとファイルを分けた方がわかりやすい
  • namespaceを使うと階層もわかりやすくなる
目次

クラスごとにファイルを分ける

これまでは簡単なプログラムだったのもあり、一つのファイルで複数クラスを定義するサンプルにしてきました。
しかしプログラムが大きくなるにしたがって、一つのファイルで管理するとわかりにくくなってしまいます。
通常はクラスごとにファイルを分けて管理します。

追加インストールなしで、csc.exeを使用して複数ファイルをコンパイルする方法をご紹介します。
下記のようにProgram.csファイルとSampleClass.csにファイルを分けて保存します。
csc.exeを呼び出すときに「*.cs」を指定するようにします。
*はワイルドカードと言って「ここの部分は何でも良いよ」という意味になります。
従ってCompile.batは「同じフォルダの.csで終わるファイルをすべてコンパイルしてください」という意味になります。

ファイル名:Program.cs
class Program
{
    static void Main()
    {
        SampleClass sample = new SampleClass();

        sample.WriteHello();
        
        System.Console.ReadKey();  // キー入力待ち
    }
}
ファイル名:SampleClass.cs
class SampleClass
{
    public void WriteHello()
    {
        System.Console.WriteLine("こんにちは");
    }
}
ファイル名:Compile.bat
C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥csc.exe *.cs
pause
Program.exe 実行結果
こんにちは

フォルダを分けてクラスを管理する

さらにクラスが多くなってくると階層で分けて管理した方がわかりやすくなります。
階層がわかりやすくなるように名前空間(namespace)で分けるようにします。
名前空間についてはC#の基本ルール[コンソールアプリ]を参照してください。
usingディレクティブについてもC#の基本ルール[コンソールアプリ]で説明しています。

ファイル名:Program.cs
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フォルダを作って、その下に下記のファイルを保存します。

ファイル名:SubClass¥SampleClass.cs
namespace SampleProgram.SubClass
{
    class SampleClass
    {
        public void WriteHello()
        {
            System.Console.WriteLine("こんにちは");
        }
    }
}

Program.csと同フォルダ内に下記のファイルを保存します。
.batファイルでは^を付けることで「コマンドが次の行も続きます」という意味になります。
下記のサンプルでは、*.csとSubClass¥*csをコンパイル対象として指定しています。

ファイル名:Compile.bat
C:¥Windows¥Microsoft.NET¥Framework¥v4.0.30319¥csc.exe ^
 *.cs ^
 SubClass¥*cs
Program.exe 実行結果
こんにちは