partial-Methode (C#-Referenz)

Bei partiellen Methoden wird die Signatur in einem Teil eines partiellen Typs definiert, und die Implementierung wird in einem anderen Teil des Typs definiert. Mit partiellen Methoden können Klassen-Designer Methoden-Hooks bereitstellen, die Ereignis-Handlern ähneln und die Entwickler ggf. implementieren können. Wenn der Entwickler keine Implementierung angibt, entfernt der Compiler die Signatur bei der Kompilierung. Die folgenden Bedingungen gelten für partielle Methoden:

  • Deklarationen müssen mit dem Kontextschlüsselwort partial beginnen.

  • Die Signaturen in beiden Teilen des partiellen Typs müssen übereinstimmen.

Das partial Schlüsselwort ist für Konstruktoren, Finalizer, überladene Operatoren, Eigenschaftendeklarationen oder Ereignisdeklarationen nicht zulässig.

Eine partielle Methode erfordert in den folgenden Fällen keine Implementierung:

  • Sie verfügt über keine Zugriffsmodifizierer (einschließlich der Standardeinstellung private).

  • Der Rückgabewert ist void.

  • Sie verfügt über keine out-Parameter.

  • Sie verfügt über keinen der folgenden Modifizierer: virtual, override, sealed, new oder extern.

Jede Methode, die nicht allen Einschränkungen entspricht (z. B. die public virtual partial void-Methode), muss eine Implementierung bereitstellen.

Im folgenden Beispiel wird eine partielle Methode veranschaulicht, die in zwei Teilen einer partiellen Klasse definiert ist:

namespace PM
{
    partial class A
    {
        partial void OnSomethingHappened(string s);
    }

    // This part can be in a separate file.
    partial class A
    {
        // Comment out this method and the program
        // will still compile.
        partial void OnSomethingHappened(String s)
        {
            Console.WriteLine("Something happened: {0}", s);
        }
    }
}

Partielle Methoden können auch in Kombination mit Quell-Generatoren nützlich sein. Beispielsweise könnte ein regulärer Ausdruck mithilfe des folgenden Musters definiert werden:

[RegexGenerated("(dog|cat|fish)")]
partial bool IsPetMatch(string input);

Weitere Informationen finden Sie unter Partielle Klassen und Methoden.

Siehe auch