Zoeken…


Invoering

Gedeeltelijke klassen biedt ons een optie om klassen in meerdere delen en in meerdere bronbestanden te splitsen. Alle onderdelen worden tijdens het compileren tot één klasse gecombineerd. Alle delen moeten het partial trefwoord bevatten, moeten dezelfde toegankelijkheid hebben. Alle onderdelen moeten in dezelfde montage aanwezig zijn om tijdens de compilatieperiode te kunnen worden opgenomen.

Syntaxis

  • openbare gedeeltelijke class MyPartialClass {}

Opmerkingen

  • Gedeeltelijke klassen moeten binnen dezelfde assembly en naamruimte worden gedefinieerd als de klasse die ze uitbreiden.

  • Alle delen van de klasse moeten het partial trefwoord gebruiken.

  • Alle delen van de klas moeten dezelfde toegankelijkheid hebben; public / protected / private enz ..

  • Als een onderdeel het abstract trefwoord gebruikt, wordt het gecombineerde type als abstract beschouwd.

  • Als een onderdeel het sealed trefwoord gebruikt, wordt het gecombineerde type beschouwd als verzegeld.

  • Als een onderdeel het basistype gebruikt, neemt het gecombineerde type over van dat type.

  • Het gecombineerde type neemt alle interfaces over die op alle deelklassen zijn gedefinieerd.

Gedeeltelijke lessen

Gedeeltelijke klassen bieden de mogelijkheid om klassendeclaraties te splitsen (meestal in afzonderlijke bestanden). Een veelvoorkomend probleem dat met gedeeltelijke klassen kan worden opgelost, is dat gebruikers automatisch gegenereerde code kunnen wijzigen zonder bang te zijn dat hun wijzigingen worden overschreven als de code opnieuw wordt gegenereerd. Ook kunnen meerdere ontwikkelaars aan dezelfde klasse of methoden werken.

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."
        }
    }
}

Gedeeltelijke methoden

Gedeeltelijke methode bestaat uit de definitie in een gedeeltelijke klasse-aangifte (als een gebruikelijk scenario - in de automatisch gegenereerde) en de implementatie in een andere gedeeltelijke klasse-aangifte.

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."
        }
    }
}

Gedeeltelijke klassen die erven van een basisklasse

Bij het erven van een basisklasse hoeft slechts één gedeeltelijke klasse de basisklasse te hebben.

// PartialClass1.cs
public partial class PartialClass : BaseClass {}

// PartialClass2.cs
public partial class PartialClass {}

U kunt dezelfde basisklasse in meer dan één gedeeltelijke klasse opgeven. Het wordt door sommige IDE-tools als overbodig gemarkeerd, maar het compileert wel correct.

// PartialClass1.cs
public partial class PartialClass : BaseClass {}

// PartialClass2.cs
public partial class PartialClass : BaseClass {} // base class here is redundant

U kunt geen verschillende basisklassen opgeven in meerdere gedeeltelijke klassen, dit zal resulteren in een compilerfout.

// 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow