vb.net – 你可以继承一个新的(构造函数)参数在VB中?

前端之家收集整理的这篇文章主要介绍了vb.net – 你可以继承一个新的(构造函数)参数在VB中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在下面的代码中我收到编译错误
Error Too many arguments to 'Public Sub New()'

对Dim TestChild作为ChildClass =新的ChildClass(“c”)。我不会收到它在TestChild.Method1(),即使他们都在我继承的基类。

Public Class BaseClass
    Public ReadOnly Text As String
    Public Sub New(ByVal SetText As String)
        Text = SetText
    End Sub
    Public Sub New()
        Text = ""
    End Sub
End Class

Public Class ChildClass
    Inherits BaseClass
End Class

Public Class TestClass
    Sub Test()
        Dim TestChild As ChildClass = New ChildClass("c")
        TestChild.Method1()
    End Sub
End Class

我可以更改子类:

Public Class ChildClass
    Inherits BaseClass
      Public Sub New (ByVal SetText As String)
      MyBase.New(SetText)
    End Class
End Class

如下所示,但我不必这样做方法1或其他继承的方法,我正在寻找最干净的代码可能。这可能是在系统中继承参数化New语句的限制,但我不能在任何地方找到它。如果需要的话,我想看看文档。

你看到的行为是“按设计”。子类不从其基类型继承构造函数。一个子类负责定义它自己的构造函数。此外,它必须确保它定义的每个构造函数隐式或显式调用到一个基类构造函数中,或链接到同一类型的另一个构造函数

您将需要在所有子类上定义相同的构造函数,并通过MyBase.New显式链接回基础构造函数。例

Class ChildClass
  Inherits BaseClass
  Public Sub New(text As String)
    MyBase.New(text)
  End Sub
End Class

您正在寻找的文档是VB语言规范的第9.3.1节。

> http://msdn.microsoft.com/en-us/library/aa711964(VS.71).aspx

我认为最相关的部分是以下(大致第二页的开头)

If a type contains no instance constructor declarations,a default constructor is automatically provided. The default constructor simply invokes the parameterless constructor of the direct base type.

这没有明确说明子类不会继承构造函数,但它是语句的副作用。

猜你在找的VB相关文章