新しい Windows フォームを作成すると、バックグラウンド コードによって次のコードが自動的に追加されます:
1 public Partial class Form1 : Form
2 {
3 public Form1()
4 {
5 InitializeComponent();
6 }
7}
クラス Form1 を部分的に変更する必要があるのはなぜですか?部分は主にどこで使用されますか?
新しく作成された Winnows Form クラスが部分クラスとして定義されているのはなぜですか。 Form1.Designer.cs ファイルを開くと、元の Form1 カテゴリの別の部分がこのファイル内でデザインされていることがわかります。この部分クラスは、使用するコントロール、イベント デリゲート、および Dispose メソッドを定義します。ここのコードは自動生成されるため、部分クラスとして設計されています。
Partialとは部分的な型という意味です。クラス、構造、またはインターフェイスをいくつかの部分に分割し、それらを複数の異なる .cs ファイルに実装できます。 C# コンパイラは、コンパイル中に各部分のローカル型を完全なクラスにマージします。
部分型は次の状況に適しています:
(1) 型が非常に大きいため、1 つのファイルに実装すべきではありません。
(2) タイプ内のコードの一部は自動ツールによって生成されたコードであり、自分で作成したコードと混合しないでください。
(3) クラスを作成するには複数の人が協力する必要があります。
ローカル型の制限
(1) ローカル型はクラス、インターフェイス、および構造体にのみ適用され、委任と列挙はサポートされません。
(2) 同じ型の各部分には修飾子部分が必要です。
(3) ローカル型を使用する場合、型の各部分は同じ名前空間に存在する必要があります。
(4) 型のすべての部分を同時にコンパイルする必要があります。
3. 部分型に関する注意事項
(1) キーワードpartialは、class、struct、interfaceと一緒に配置された場合にのみキーワードの意味を持ちます。したがって、partial を導入しても、既存のコード内にあるpartial という名前の変数には影響しません。
(2) ローカル型の各部分は通常、複数の異なる .cs ファイルに配置されますが、C# コンパイラーを使用すると、それらを同じファイルに配置できます。
4. ローカル型のアプリケーション特性
ローカル型の特性には「累積的」効果があります。
[Attribute1, Attribute2("Hello")]
部分クラス Class1{}
[Attribute3, Attribute2("Exit")]
部分クラス Class1{}
は
[Attribute1, Attribute2(" Hello" "), Attribute3, Attribute2("Exit")]
class Class1 {}
注: Attribute2 属性は、1 つのクラスで複数回使用できます。
5. ローカル型の修飾子
(1) 型のさまざまな部分のアクセス修飾子は、一貫性を維持する必要があります。
(2) 型の一部で abstract 修飾子が使用されている場合、クラス全体が抽象クラスとみなされます。
(3) 型の一部で sealed 修飾子が使用されている場合、クラス全体が sealed クラスとみなされます。
(4) クラスの各部分で矛盾する修飾子を使用することはできません。たとえば、ある部分で abstract を使用し、別の部分で sealed を使用することはできません。
6. ローカル型の基底クラスとインターフェース
(1) 型の各部分で指定される基底クラスは一貫していなければなりません。セクションでは基本クラスを指定できませんが、指定する場合は同じである必要があります。
(2) ローカル型のインターフェイスには「累積的」効果があります。
部分クラス Class2: Iinterface1、Iinterface2 {}
部分クラス Class2: Iinterface3 {}
部分クラス Class2: Iinterface2 {}
は
クラス Class2: Iinterface1、Iinterface2、Iinterface3 {}