加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 22:35:46 所属栏目:大数据 来源:网络整理
导读:在下面的代码中我收到编译错误 Error Too many arguments to 'Public Sub New()' 对Dim TestChild作为ChildClass =新的ChildClass(“c”)。我不会收到它在TestChild.Method1(),即使他们都在我继承的基类。 Public Class BaseClass Public ReadOnly Text As
在下面的代码中我收到编译错误
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.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读