2012-02-14 38 views
11

Com'è possibile che la classe in C# non abbia definito alcun costruttore? Per esempio ho una classeClasse C# senza costruttore

internal class TextStyle 
{ 
    internal string text = ""; 
    internal Font font = new Font("Arial", 8); 
    internal Color color = Color.Black; 
} 

E nel codice questa classe viene creata un'istanza come

TextStyle textParameters = new TextStyle(); 

risposta

31

Se non si dichiara alcun costruttore per una classe non statica, il compilatore fornisce un pubblico (o protetto per classi astratte) costruttore senza parametri per te. La classe ha effettivamente un costruttore di:

public TextStyle() 
{ 
} 

Questa è descritta nella sezione 10.11.4 della C# 4 spec:

Se una classe non contiene dichiarazioni costruttore esempio, un costruttore di istanza di default è automaticamente fornito. Il costruttore predefinito invoca semplicemente il costruttore senza parametri della classe di base diretta. Se la classe base diretta non ha un costruttore di istanze senza parametri accessibile, si verifica un errore in fase di compilazione. Se la classe è astratta, l'accessibilità dichiarata per il costruttore predefinito è protected. In caso contrario, l'accessibilità dichiarata per il costruttore predefinito è public.

Le uniche classi in C# che non hanno alcun costruttori di istanza sono classi statiche, e non possono avere costruttori.

0

Esiste un costrittore implicito vuoto se non si definisce un altro costruttore.

+3

-1; questo in pratica ripete semplicemente ciò che Jon Skeet ha scritto 40 secondi prima, ma con errori di battitura, con meno dettagli e senza riferimenti autorevoli. Questa risposta non aggiunge alcun valore alla pagina. –

Problemi correlati