サーチ…


前書き

部分クラスは、クラスを複数の部分と複数のソースファイルに分割するオプションを提供します。コンパイル時には、すべてのパートが1つのクラスにまとめられます。すべての部分にキーワードpartialが含まれていて、同じアクセシビリティである必要があります。コンパイル時にすべてのパーツを同じアセンブリに含める必要があります。

構文

  • パブリック部分クラスMyPartialClass {}

備考

  • 部分的なクラスは、同じアセンブリ内で定義し、名前空間は拡張するクラスと同じように定義する必要があります。

  • クラスのすべての部分でpartialキーワードを使用する必要があります。

  • クラスのすべての部分が同じアクセシビリティを持たなければなりません。 public / protected / privateなど。

  • いずれかの部分がabstractキーワードを使用する場合、結合された型は抽象と見なされます。

  • いずれかのパートがsealedキーワードを使用する場合、結合されたタイプはシールされたとみなされます。

  • いずれかの部分が基本型を使用する場合、結合型はその型から継承します。

  • 複合型は、すべての部分クラスで定義されたすべてのインタフェースを継承します。

部分クラス

部分クラスは、クラス宣言を(通常は別々のファイルに)分割する機能を提供します。部分クラスで解決できる共通の問題は、コードを再生成した場合に変更が上書きされることを恐れずに、ユーザーが自動生成コードを変更できるようにすることです。また、複数の開発者が同じクラスまたはメソッドで作業することができます。

using System;

namespace PartialClassAndMethods
{
    public partial class PartialClass
    {
        public void ExampleMethod() {
            Console.WriteLine("Method call from the first declaration.");
        }
    }

    public partial class PartialClass
    {
        public void AnotherExampleMethod()
        {
            Console.WriteLine("Method call from the second declaration.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            PartialClass partial = new PartialClass();
            partial.ExampleMethod(); // outputs "Method call from the first declaration."
            partial.AnotherExampleMethod(); // outputs "Method call from the second declaration."
        }
    }
}

部分的な方法

パーシャルメソッドは、1つの部分クラス宣言の定義(一般的なシナリオ - 自動生成されたもの)と、別の部分クラス宣言の実装で構成されます。

using System;

namespace PartialClassAndMethods
{
    public partial class PartialClass // Auto-generated
    {
        partial void PartialMethod();
    }

    public partial class PartialClass // Human-written
    {
        public void PartialMethod()
        {
            Console.WriteLine("Partial method called.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            PartialClass partial = new PartialClass();
            partial.PartialMethod(); // outputs "Partial method called."
        }
    }
}

基底クラスから継承する部分クラス

いずれかの基本クラスから継承する場合は、1つの部分クラスのみが基本クラスを指定する必要があります。

// PartialClass1.cs
public partial class PartialClass : BaseClass {}

// PartialClass2.cs
public partial class PartialClass {}

複数の部分クラスで同じ基本クラスを指定できます。それはいくつかのIDEツールで冗長としてフラグが立てられますが、正しくコンパイルされます。

// PartialClass1.cs
public partial class PartialClass : BaseClass {}

// PartialClass2.cs
public partial class PartialClass : BaseClass {} // base class here is redundant

複数の部分クラスに異なる基本クラスを指定することはできません 。コンパイルエラーが発生します。

// PartialClass1.cs
public partial class PartialClass : BaseClass {} // compiler error

// PartialClass2.cs
public partial class PartialClass : OtherBaseClass {} // compiler error


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow