2012-07-02 67 views
6

System.ServiceProcess.ServiceBase类的构造函数的Microsoft .NET文档中说:从ServiceBase派生时,是否调用基础构造函数?

如果重写基类的构造函数,你应该明确地调用它 在派生类的构造函数。

Using Constructors微软C#编程指南中,它说:

在派生类中,如果一个基类的构造函数没有被使用基关键字称为 明确的,默认的构造函数,如果 有一个,则隐式调用。

那么我需要显式调用基础构造函数吗?为什么?

回答

5

没关系。这些编译相同的IL:

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

我不知道为什么ServiceBase建议显式调用它。我会同意其他建议,因为它似乎更有意义。

+0

该文档的_“覆盖基类的构造函数”_甚至有意义吗?就我所知,实例构造函数并不是真的虚拟的,它们也不是被继承的。但是当然,当基类中只有一个可访问的实例构造函数时,就没有什么可以做错了(因为你必须“链接”一些基类构造函数)。文档权限在C#以外的某种.NET语言中可能是有意义的?还是仅仅是纯粹的废话? –

+1

据我所知,这是无稽之谈。 –

相关问题