Wenn wir ein neues Windows Form erstellen, fügt der Hintergrundcode automatisch den folgenden Code hinzu:
1 öffentliche Teilklasse Form1 : Form
2 {
3 öffentliche Form1()
4 {
5 InitializeComponent();
6 }
7 }
Warum wird die Klasse Form1 mit Partial geändert? Wo werden Teilprodukte hauptsächlich verwendet?
Warum ist die neu erstellte Winows-Formularklasse als Teilklasse definiert? Wenn wir die Datei Form1.Designer.cs öffnen, können wir sehen, dass ein anderer Teil der ursprünglichen Form1-Kategorie in dieser Datei entworfen wurde. Diese Teilklasse definiert die von uns verwendeten Steuerelemente, Ereignisdelegaten und Dispose-Methoden. Da der Code hier automatisch generiert wird, ist er als Teilklasse konzipiert.
Teilweise bedeutet Teiltyp. Ermöglicht uns, eine Klasse, Struktur oder Schnittstelle in mehrere Teile zu unterteilen und diese in mehreren verschiedenen CS-Dateien zu implementieren. Der C#-Compiler führt während der Kompilierung weiterhin die lokalen Typen jedes Teils zu einer vollständigen Klasse zusammen
Lokale Typen eignen sich für die folgenden Situationen:
(1) Der Typ ist extrem groß und sollte nicht in platziert werden eine Datei erreichen.
(2) Ein Teil des Codes in einem Typ ist Code, der von automatisierten Tools generiert wurde und nicht mit von uns selbst geschriebenem Code vermischt werden sollte.
(3) Um einen Kurs zu schreiben, müssen mehrere Personen zusammenarbeiten.
Einschränkungen lokaler Typen
(1) Lokale Typen gelten nur für Klassen, Schnittstellen und Strukturen und unterstützen keine Delegation und Aufzählung.
(2) Jeder Teil des gleichen Typs muss den Modifikator partiell haben.
(3) Bei der Verwendung lokaler Typen muss sich jeder Teil eines Typs im selben Namespace befinden.
(4) Alle Teile eines Typs müssen gleichzeitig kompiliert werden.
3. Hinweise zu partiellen Typen
(1) Das Schlüsselwort „partial“ ist ein kontextbezogenes Schlüsselwort, das nur dann die Bedeutung des Schlüsselworts hat, wenn es zusammen mit „class“, „struct“ und „interface“ platziert wird. Daher hat die Einführung von „Partial“ keine Auswirkungen auf Variablen mit dem Namen „Partial“ im vorhandenen Code.
(2) Die verschiedenen Teile lokaler Typen werden normalerweise in mehreren verschiedenen CS-Dateien abgelegt, aber der C#-Compiler ermöglicht es uns, sie in derselben Datei abzulegen.
4. Anwendungsfunktionen lokaler Typen
Funktionen lokaler Typen haben einen „akkumulierenden“ Effekt.
[Attribute1, Attribute2("Hello")]
Teilklasse Class1{}
[Attribute3, Attribute2("Exit")]
Teilklasse Class1{}
entspricht
[Attribute1, Attribute2("Hello"), Attribute3, Attribute2("Exit")]
class Class1 {}
Hinweis: Attribute2-Attribute dürfen in einer Klasse mehrfach verwendet werden.
5. Modifikatoren für lokale Typen
(1) Zugriffsmodifikatoren für verschiedene Teile eines Typs müssen konsistent bleiben.
(2) Wenn ein Teil eines Typs den abstrakten Modifikator verwendet, wird die gesamte Klasse als abstrakte Klasse betrachtet.
(3) Wenn ein Teil eines Typs den versiegelten Modifikator verwendet, wird die gesamte Klasse als versiegelte Klasse betrachtet.
(4) Jeder Teil einer Klasse kann nicht widersprüchliche Modifikatoren verwenden. Sie können beispielsweise nicht „abstrakt“ für einen Teil und „versiegelt“ für einen anderen Teil verwenden.
6. Basisklassen und Schnittstellen lokaler Typen
(1) Die für jeden Teil eines Typs angegebenen Basisklassen müssen konsistent sein. Ein Abschnitt darf keine Basisklasse angeben, aber wenn sie angegeben wird, muss sie dieselbe sein.
(2) Schnittstellen auf lokalen Typen haben einen „kumulativen“ Effekt.
Teilklasse Klasse2: Iinterface1, Iinterface2 {}
Teilklasse Klasse2: Iinterface3 {}
Teilklasse Klasse2: Iinterface2 {}
entspricht
Klasse Klasse2: Iinterface1, Iinterface2, Iinterface3 {}