微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

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

原文地址:https://www.jb51.cc/vb/256356.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐