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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow