在派生构造函数中显式调用base()是可选的
本文关键字:base 调用 构造函数 派生 | 更新日期: 2023-09-27 18:29:12
所有代码示例总是使用base(),如下所示
class A
{
public A()
{
Console.Writeline("A");
}
}
class B : A
{
public B():base() {}
}
例如。http://msdn.microsoft.com/en-us/library/hfw7t1ce%28v=vs.71%29.aspx
而正如我最近发现的
class A
{
public A()
{
Console.Writeline("A");
}
}
class B : A
{
public B() {}
}
还打印
Q-这是一个新的"特性",还是在派生类构造函数中不调用base()是一种糟糕的形式,会增加我的坏运气,并在以后引发问题?
或
可以安全地忽略调用base()吗?
不,这不是什么新鲜事——如果你没有显式调用基构造函数,默认情况下会调用默认构造函数。
如果你自己添加这个,我会认为只是"噪音",编译器会为你做这件事,所以你不必这么做。只有当你需要默认构造函数之外的特定重载时,你才应该调用基构造函数(这意味着如果基类不提供默认构造函数,你确实需要调用基构造函数)。
如果
1) 您需要将变量传递给基构造函数。
2) 您需要指定要使用的基构造函数。
除此之外,你可以放心地忽略它。将调用默认的基构造函数。
无论是否使用: base()
显式调用默认构造函数,都会调用它。这是一个风格问题,但主流的惯例是,除非您调用特定的参数化基构造函数,否则不要使用它。
不需要调用base()。默认的基构造函数是自动调用的,除非显式调用另一个。我认为这是个人偏好的问题,有点像在访问实例字段之前准备this
。
当父级和子级都有隐式或显式无参数构造函数时,不需要从构造函数调用base()。这将默认发生,不,这不是什么新鲜事。通常,您会使用base()方法来说明您正在调用哪个父构造函数,并将参数从子构造函数传递给父构造函数。
尝试在构造函数中使用参数,看看它是如何工作的。