C# Partial Classes en Methods: Een Praktische Gids
C# Partial Classes en Methods Begrijpen
Dit artikel legt uit hoe en waarom C# ontwikkelaars partial classes en partial methods gebruiken om grote codebases te managen, effectief te collaboreren en compilatie te optimaliseren.
Wanneer meerdere ontwikkelaars aan één uitgebreide klasse werken, of wanneer u handgeschreven code moet samenvoegen met code gegenereerd door tools zoals Visual Studio, biedt C#'s partial keyword een schone oplossing.
Wat is een Partial Class?
Een partial class laat u de definitie van een enkele klasse splitsen over twee of meer bronbestanden. Elk bestand bevat een fragment van de klasse, en de compiler zet ze samen tijdens de build. Het keyword partial moet in elk deel van de klasse voorkomen.
Voorbeeld 1 – Een Eenvoudige Klasse Splitsen
Overweeg een project genaamd HeightWeightInfo dat een persoons lengte en gewicht opslaat.
namespace HeightWeightInfo {
public partial class Record {
private int h;
private int w;
public Record(int h, int w) {
this.h = h;
this.w = w;
}
}
}
Dezelfde Record klasse wordt vervolgd in een tweede bestand.
namespace HeightWeightInfo {
public partial class Record {
public void PrintRecord() {
Console.WriteLine("Lengte:" + h);
Console.WriteLine("Gewicht:" + w);
}
}
}
Ten slotte ziet het programma dat de klasse gebruikt er zo uit:
namespace HeightWeightInfo {
class Program {
static void Main(string[] args) {
Record myRecord = new Record(10, 15);
myRecord.PrintRecord();
Console.ReadLine();
}
}
}
De compiler voegt de twee Record definities samen tot één klasse die zowel de constructor als de PrintRecord methode bevat.
Wanneer Partial Classes Te Gebruiken
- Grote projecten met meerdere ontwikkelaars: Elk teamlid kan een apart bestand bewerken zonder conflicten.
- Auto-gegenereerde code: IDE's creëren vaak bestanden die niet handmatig bewerkt moeten worden; partial classes staan u toe custom logica toe te voegen zonder gegenereerde code te wijzigen.
Belangrijke Punten om Te Onthouden
- Het
partialkeyword moet in elk bestand voorkomen dat bijdraagt aan de klasse. - Alle delen moeten in dezelfde namespace liggen en samen gecompileerd worden.
- Alle delen moeten dezelfde access modifier delen (bijv.
public,internal). - Als een deel de klasse declareert als
abstractofsealed, erft de hele klasse dat attribuut. - Alle leden gedefinieerd in elk deel zijn zichtbaar voor elk ander deel.
- Partial modifiers zijn niet toegestaan op delegates of enumeraties.
Wat is een Partial Methode?
Een partial methode is een speciaal type methode die gedeclareerd kan worden in één deel van een partial klasse en optioneel geïmplementeerd in een ander. Als de implementatie weggelaten wordt, worden zowel de methode declaratie als eventuele aanroepen ervan tijdens compileertijd verwijderd, wat prestaties kan verbeteren.
Voorbeeld 2 – Partial Methods Gebruiken
In file1.cs declareert de Car klasse een partial methode en andere reguliere methodes.
public partial class Car {
partial void InitializeCar();
public void BuildRim() { }
public void BuildWheels() { }
}
In file2.cs levert dezelfde Car klasse de implementatie voor InitializeCar en voegt een andere methode toe.
public partial class Car {
public void BuildEngine() { }
partial void InitializeCar() {
string str = "Auto";
}
}
Partial methode declaraties bestaan uit twee delen: de handtekening in één bestand en de optionele implementatie in hetzelfde of een ander bestand.
Regels voor Partial Methods
- Moet gedeclareerd worden met het
partialkeyword. - Return type is altijd
void(geen retourwaarde). - Impliciet
private; ze kunnen nietpublic,protectedofinternalzijn. - Kunnen niet gedeclareerd worden als
virtual,overrideofabstract. - Als geen implementatie geleverd wordt, verwijdert de compiler de methode en alle aanroepen ervan.
C Taal
- ASTM A729 Klasse A: Dubbel-Genormaliseerd & Aangelaten Staal – Belangrijkste Eigenschappen & Standaarden
- ASTM A649 Klasse 2 Genormaliseerd & Aangelaten Staal – Specificaties & Eigenschappen
- ASTM A288 Klasse 4 Afkool & Aangelaten Staal – Specificaties & Eigenschappen
- C# Classes & Objects: Fundamenten voor Robuuste OOP
- C# Abstract Classes & Methods: Een Praktische Gids
- C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
- C++ klassen & objecten: praktische gids voor object-georiënteerd programmeren
- C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
- C# Erfelijkheid Beheersen: Herbruikbare, Onderhoudbare Code Bouwen
- C# Polymorfisme: Statische vs Dynamische Binding Uitgelegd
- Java Onder de Knie: Objects, Classes en Kern OOP Concepten