2012-07-02 9 views
6

documentazione di Microsoft .NET per il costruttore della classe System.ServiceProcess.ServiceBase dice:Chiamare il costruttore base quando derivante da ServiceBase?

Se si ignora il costruttore della classe base, si dovrebbe chiamare in modo esplicito nel costruttore della classe derivata.

In Using Constructors nella Guida Microsoft C# di programmazione, si dice:

in una classe derivata, se un costruttore della classe base non viene chiamata esplicitamente utilizzando la parola chiave di base, il costruttore di default, se ce n'è uno, è chiamato implicitamente.

Così ho bisogno di chiamare il costruttore base esplicitamente o no, e perché?

risposta

5

Non importa. Questi compilare lo stesso IL:

public class Service1 : ServiceBase 
{ 
    public Service1() : base() { } 
} 
public class Service1 : ServiceBase 
{ 
    public Service1() { } 
} 

Non so il motivo per cui ServiceBase consiglia di chiamare in modo esplicito. Vorrei andare con l'altro suggerimento, dal momento che sembra avere più senso.

+0

Il _ della documentazione "sovrascrive il costruttore della classe base" _ ha senso? I costruttori di istanze non sono realmente virtuali e non sono ereditati, per quanto ne so. Ma ovviamente, quando c'è un solo costruttore di istanze accessibile nella classe base, non c'è nulla che tu possa fare di sbagliato (dal momento che devi "concatenare" qualche costruttore di base). La senetenza della documentazione può avere senso in qualche linguaggio .NET diverso da C#? O è solo pura assurdità? –

+1

Per quanto ne so, è una sciocchezza. –

Problemi correlati