为什么基类必须有默认的新?

时间:2017-10-01 18:15:34

标签: vb.net

我收到了这个错误

https://docs.microsoft.com/en-us/dotnet/visual-basic/misc/bc30387

我想知道为什么。

如果我从不想在基类和派生类中调用无参数new,那该怎么办?

如果我不使用继承,我可以这样做。为什么使用继承意味着我不能再这样做了?

重复此问题

解释是什么?所以不是每个类都需要无参数的新类,但具有继承的类必须吗?这没有意义。

如果我从不使用参数less构造函数调用派生类,该怎么办?我不打算在没有参数的情况下构建类。

例如,比方说,我想创建一个没有无参数构造函数的类。我能做得对。

但是说我想把班级分成两部分。家长和儿童班。我希望两者都没有无参数构造函数。

我似乎不能那样做吗?如果是这种情况,任何人都可以确认。

1 个答案:

答案 0 :(得分:1)

链接说如果你的基类中有一个带有参数的显式构造函数而没有无参数,那么你就不能在没有构造函数的情况下离开派生类。因为VB.NET不能为派生类创建隐式构造函数。

如果你没有为两者编写任何构造函数,那么它是完全有效的。

public class Base

End Class

Public Class Derived 
    Inherits Base

End Class

但是,如果没有像下面这样的显式构造函数,则无法声明派生类。因为VB.NET无法确定如何初始化基类。

public class Base
    Public sub New(ByVal Item As Integer)

    End Sub
End Class

Public Class Derived 
    Inherits Base

End Class

要解决此问题,您可以在派生类上声明一个默认构造函数,该构造函数使用默认值调用基类构造函数。

public class Base
    Public sub New(ByVal Item As Integer)

    End Sub
End Class

Public Class Derived 
    Inherits Base

    Public Sub New()
        MyBase.New(5)

    End Sub
End Class