partialキーワードでクラスの分割定義

クラス - C# によるプログラミング入門 | ++C++; // 未確認飛行 C


partialキーワードを使えばクラス定義を分割することができます。

using System;

// partialでクラスの分割定義
partial class CClass {
    static public void Foo () {
        Console.WriteLine( "Foo" );
    }
}
partial class CClass {
    static public void Bar () {
        Console.WriteLine( "Bar" );
    }
}

class Program {
    static void Main() {
        CClass.Foo();
        CClass.Bar();
    }
}
$ main
Foo
Bar

面白い機能ですね。同じクラスを担当者が別々で作業したい時とかに使えるとかでしょうか。

ちなみにpartialは両方ともに付いていないと駄目みたいです。

つまり既に存在するpartialの付いてないクラスを分割することはできないということですね。

// partialが付いてない
class CClass {
    static public void Foo () {
        Console.WriteLine( "Foo" );
    }
}

partial class CClass {
    static public void Bar () {
        Console.WriteLine( "Bar" );
    }
}
$ csc main.cs
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.

main.cs(3,7): error CS0260: partial 識別子が型 'CClass' にありません。この型の別の partial 宣言が存在します。
main.cs(8,15): (以前のエラーに関連するシンボルの位置)

ちなみにメソッドの実装の分離というのもあるみたいですが、こちらはあまり使い道がなさそうなのでとりあえずそういう機能があるということだけ覚えておきます。