コードの分割

プログラムがある程度の分量になるとコードの見通しが悪くなってきます。
最終的に出力されるプログラムは同じでも、生産性の向上のためにソースコードを複数のファイルに分割することをおすすめします。

クラス毎に分ける

どのような基準でファイルを分けるかは自由ですが、C#では基本的にひとつのクラスにつきひとつのファイルに分割します。
ファイル名はクラス名と同じにします。


//Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //省略
        }
    }
}

//SimpleClass.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class SimpleClass
    {
        public void Test()
        {
            //省略
        }
    }
}

クラス同士の依存が強い場合はひとつのファイルに複数のクラスを記述することもあります。

文頭のusingディレクティブはファイル毎に独立しているので、必要に応じて追加しておきます。
なお、必要のないusingディレクティブは削除しなくてもプログラムの動作に影響はありません。
あくまでもコードの記述を簡便にできるだけの機能です。

Visual Studioで新規ソースコードを追加する

Visual Studioでは以下の手順で新規ソースコードを追加できます。

ソリュージョンエクスプローラーを表示し、プロジェクト名を右クリックします。
(ソリュージョンエクスプローラーが表示されていない場合は上部メニューの「表示→ソリュージョンエクスプローラー」を選択します。)
右クリックメニューから「追加→新しい項目」を選択します。
Visual Studioで新規ファイルを追加1

表示されたウィンドウの中央で「クラス」を選択し、「名前」欄にファイル名を入力して「追加」を選択します。
Visual Studioで新規ファイルを追加2

なお、ファイル名は後からソリュージョンエクスプローラーで変更できます。

クラスを複数に分割

ひとつのクラスが巨大な場合はクラス自体を複数に分割することもできます。
クラスの分割にはpartialというキーワードを使用します。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    partial class SimpleClass
    {
        public void Test1()
        {
            Console.WriteLine("SimpleClass Test1");
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    partial class SimpleClass
    {
        public void Test2()
        {
            Console.WriteLine("SimpleClass Test2");
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            SimpleClass sc = new SimpleClass();
            sc.Test1();
            sc.Test2();

            Console.ReadLine();
        }
    }
}
SimpleClass Test1
SimpleClass Test2

partialで分割されたクラスはコード上は別々になりますが、合わせてひとつのクラスです。
互いにメンバーを共有できますし、逆に言えば同名のメンバーを重複して定義することはできません。