partial メソッド (C# リファレンス)

部分メソッドには、部分型の一部に定義されたシグネチャ、および部分型の別の部分に定義された実装があります。 部分メソッドを使用すると、イベント ハンドラーと同じように、開発者が実装するかどうかを決定できるメソッド フックをクラス デザイナーで提供できます。 開発者が実装を指定しない場合、コンパイラはコンパイル時にシグネチャを削除します。 部分メソッドには次の条件が適用されます。

  • 宣言は、コンテキスト キーワード partial で始まる必要があります。

  • 部分型の両方の部分のシグネチャが一致する必要がある。

partial キーワードは、コンストラクター、ファイナライザー、オーバーロードされた演算子、プロパティ宣言、またはイベント宣言では使用できません。

次の場合には、部分メソッドを実装する必要はありません。

  • アクセシビリティ修飾子 (既定の private を含む) はありません。

  • void を返します。

  • out パラメーターはありません。

  • virtualoverridesealednewextern のいずれの修飾子もありません。

これらのすべての制限に準拠していないメソッド (public virtual partial void メソッドなど) は、実装を提供する必要があります。

部分クラスの 2 つの部分に定義された部分メソッドを次の例に示します。

namespace PM
{
    partial class A
    {
        partial void OnSomethingHappened(string s);
    }

    // This part can be in a separate file.
    partial class A
    {
        // Comment out this method and the program
        // will still compile.
        partial void OnSomethingHappened(String s)
        {
            Console.WriteLine("Something happened: {0}", s);
        }
    }
}

部分メソッドは、ソース ジェネレーターと組み合わせて使用することもできます。 たとえば、regex は、次のパターンを使用して定義できます。

[GeneratedRegex("(dog|cat|fish)")]
partial bool IsPetMatch(string input);

詳細については、「部分クラスと部分メソッド」を参照してください。

関連項目