Ricerca…


introduzione

Le classi parziali ci forniscono un'opzione per dividere le classi in più parti e in più file sorgente. Tutte le parti sono combinate in una singola classe durante la compilazione. Tutte le parti dovrebbero contenere la parola chiave partial , dovrebbero essere della stessa accessibilità. Tutte le parti devono essere presenti nello stesso assieme per essere incluse durante la compilazione.

Sintassi

  • public partial class MyPartialClass {}

Osservazioni

  • Le classi parziali devono essere definite all'interno dello stesso assembly e spazio dei nomi, come la classe che stanno estendendo.

  • Tutte le parti della classe devono utilizzare la parola chiave partial .

  • Tutte le parti della classe devono avere la stessa accessibilità; public / protected / private ecc.

  • Se una parte utilizza la parola chiave abstract , il tipo combinato viene considerato astratto.

  • Se una parte utilizza la parola chiave sealed , il tipo combinato viene considerato sealed.

  • Se una parte usa il tipo base, il tipo combinato eredita da quel tipo.

  • Il tipo combinato eredita tutte le interfacce definite su tutte le classi parziali.

Lezioni parziali

Le classi parziali forniscono la possibilità di dividere la dichiarazione della classe (di solito in file separati). Un problema comune che può essere risolto con classi parziali è che consente agli utenti di modificare il codice generato automaticamente senza temere che le loro modifiche vengano sovrascritte se il codice viene rigenerato. Inoltre, più sviluppatori possono lavorare sulla stessa classe o metodi.

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

Metodi parziali

Il metodo parziale consiste nella definizione in una dichiarazione di classe parziale (come scenario comune - in quello generato automaticamente) e nell'implementazione in un'altra dichiarazione di classe parziale.

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

Classi parziali che ereditano da una classe base

Quando si eredita da qualsiasi classe base, solo una classe parziale deve avere la classe base specificata.

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

// PartialClass2.cs
public partial class PartialClass {}

È possibile specificare la stessa classe base in più di una classe parziale. Verrà contrassegnato come ridondante da alcuni strumenti IDE, ma viene compilato correttamente.

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

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

Non è possibile specificare classi di base diverse in più classi parziali, si verificherà un errore del compilatore.

// 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow