C# Language
Classe e metodi parziali
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