C# Language
Delklass och metoder
Sök…
Introduktion
Delklasser ger oss ett alternativ att dela klasser i flera delar och i flera källfiler. Alla delar kombineras till en enda klass under sammanställningstiden. Alla delar ska innehålla nyckelordet partial
, ska ha samma tillgänglighet. Alla delar ska finnas i samma enhet för att den ska inkluderas under kompileringstiden.
Syntax
- partiella offentliga klass MyPartialClass {}
Anmärkningar
Delklasser måste definieras inom samma montering och namnutrymme som klassen som de utökar.
Alla delar av klassen måste använda det
partial
nyckelordet.Alla delar av klassen måste ha samma tillgänglighet;
public
/protected
/private
etc.Om någon del använder det
abstract
nyckelordet anses den kombinerade typen vara abstrakt.Om någon del använder det
sealed
nyckelordet betraktas den kombinerade typen som förseglad.Om någon del använder a bastyp ärver den kombinerade typen från den typen.
Den kombinerade typen ärver alla gränssnitt definierade i alla delklasser.
Delklasser
Delklasser ger möjlighet att dela klassdeklarationen (vanligtvis i separata filer). Ett vanligt problem som kan lösas med delklasser är att låta användare ändra auto-genererad kod utan att frukta att deras förändringar kommer att skrivas över om koden regenereras. Också flera utvecklare kan arbeta med samma klass eller metoder.
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."
}
}
}
Partiella metoder
Partiell metod består av definitionen i en delklassklassdeklaration (som ett vanligt scenario - i den auto-genererade en) och implementeringen i en annan delklassklassdeklaration.
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."
}
}
}
Delklasser som ärver från en basklass
När man ärver från någon basklass behöver endast en delklass anges basklassen.
// PartialClass1.cs
public partial class PartialClass : BaseClass {}
// PartialClass2.cs
public partial class PartialClass {}
Du kan ange samma basklass i mer än en delklass. Det kommer att bli flaggat som överflödigt av vissa IDE-verktyg, men det kompilerar korrekt.
// PartialClass1.cs
public partial class PartialClass : BaseClass {}
// PartialClass2.cs
public partial class PartialClass : BaseClass {} // base class here is redundant
Du kan inte ange olika basklasser i flera delklasser, det kommer att resultera i ett kompileringsfel.
// PartialClass1.cs
public partial class PartialClass : BaseClass {} // compiler error
// PartialClass2.cs
public partial class PartialClass : OtherBaseClass {} // compiler error