C# Partielle Klassen und Methoden verstehen
C# Partielle Klassen und Methoden verstehen
Dieser Artikel erklärt, wie und warum C# Entwickler partielle Klassen und partielle Methoden nutzen, um große Codebasen zu verwalten, effektiv zusammenzuarbeiten und Kompilierung zu optimieren.
Wenn mehrere Entwickler an einer einzelnen, umfangreichen Klasse arbeiten, oder wenn Sie handgeschriebenen Code mit Tool-generiertem Code (wie von Visual Studio) zusammenführen müssen, bietet C#'s partial Schlüsselwort eine saubere Lösung.
Was ist eine partielle Klasse?
Eine partielle Klasse erlaubt es, die Definition einer einzelnen Klasse auf zwei oder mehr Quelldateien aufzuteilen. Jede Datei enthält einen Teil der Klasse, und der Compiler fügt sie zur Build-Zeit zusammen. Das Schlüsselwort partial muss in jedem Teil der Klasse erscheinen.
Beispiel 1 – Einfache Klasse aufteilen
Betrachten Sie ein Projekt namens HeightWeightInfo, das Größe und Gewicht einer Person speichert.
namespace HeightWeightInfo {
public partial class Record {
private int h;
private int w;
public Record(int h, int w) {
this.h = h;
this.w = w;
}
}
}
Die gleiche Record Klasse wird in einer zweiten Datei fortgesetzt.
namespace HeightWeightInfo {
public partial class Record {
public void PrintRecord() {
Console.WriteLine("Height:" + h);
Console.WriteLine("Weight:" + w);
}
}
}
Schließlich sieht das Programm, das die Klasse nutzt, so aus:
namespace HeightWeightInfo {
class Program {
static void Main(string[] args) {
Record myRecord = new Record(10, 15);
myRecord.PrintRecord();
Console.ReadLine();
}
}
}
Der Compiler führt die beiden Record Definitionen zu einer einzelnen Klasse zusammen, die sowohl den Konstruktor als auch die PrintRecord Methode enthält.
Wann partielle Klassen nutzen
- Große Projekte mit mehreren Entwicklern: Jedes Teammitglied kann eine separate Datei bearbeiten, ohne Konflikte.
- Auto-generierter Code: IDEs erstellen oft Dateien, die nicht manuell bearbeitet werden sollen; partielle Klassen erlauben benutzerdefinierte Logik ohne Modifikation des generierten Codes.
Wichtige Punkte
- Das
partialSchlüsselwort muss in jeder Datei erscheinen, die zur Klasse beiträgt. - Alle Teile müssen im selben Namespace residieren und gemeinsam kompiliert werden.
- Alle Teile müssen denselben Zugriffsmodifizierer teilen (z.B.
public,internal). - Wenn ein Teil die Klasse als
abstractodersealeddeklariert, erbt die gesamte Klasse dieses Attribut. - Alle in einem Teil definierten Member sind für jeden anderen Teil sichtbar.
- Partielle Modifizierer sind für Delegaten oder Enumerationen nicht erlaubt.
Was ist eine partielle Methode?
Eine partielle Methode ist ein spezieller Methodentyp, der in einem Teil einer partiellen Klasse deklariert und optional in einem anderen implementiert werden kann. Wird die Implementierung weggelassen, werden sowohl die Methodendeklaration als auch alle Aufrufe davon zur Kompilierzeit verworfen, was die Performance verbessern kann.
Beispiel 2 – Partielle Methoden nutzen
In file1.cs deklariert die Car Klasse eine partielle Methode und andere reguläre Methoden.
public partial class Car {
partial void InitializeCar();
public void BuildRim() { }
public void BuildWheels() { }
}
In file2.cs stellt die gleiche Car Klasse die Implementierung für InitializeCar bereit und fügt eine weitere Methode hinzu.
public partial class Car {
public void BuildEngine() { }
partial void InitializeCar() {
string str = "Car";
}
}
Partielle Methodendeklarationen bestehen aus zwei Teilen: der Signatur in einer Datei und der optionalen Implementierung in derselben oder einer anderen Datei.
Regeln für partielle Methoden
- Müssen mit dem
partialSchlüsselwort deklariert werden. - Rückgabetyp ist immer
void(kein Rückgabewert). - Implizit
private; sie können nichtpublic,protectedoderinternalsein. - Können nicht als
virtual,overrideoderabstractdeklariert werden. - Wenn keine Implementierung bereitgestellt wird, entfernt der Compiler die Methode und alle Aufrufe dazu.
C Sprache
- C# Klassen & Objekte: Fundamente für robustes OOP
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- Versiegelte Klassen und Methoden in C# meistern
- C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
- C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
- Java meistern: Objekte, Klassen und Kern-OOP-Konzepte verstehen
- C# Vererbung: Wiederverwendbaren & wartbaren Code erstellen
- C# Polymorphie: Statische vs. Dynamische Bindung
- ASTM A729 Klasse A: Doppel-normalisierter & vergüteter Stahl – Eigenschaften & Normen
- ASTM A649 Klasse 2: Normalisierter & vergüteter Stahl – Spezifikationen & Eigenschaften