gpt4 book ai didi

vb.net - 尝试在 VB.NET 中调用重载构造函数时出现编译器错误

转载 作者:行者123 更新时间:2023-12-02 00:08:58 26 4
gpt4 key购买 nike

有人可以向我解释一下为什么当我尝试从继承的对象调用基类的构造函数时会出现编译器错误吗?我已经提供了我所指内容的一个简短示例。

Public Class Person
Public name As String

Public Sub New()
name = "John Doe"
End Sub

Public Sub New(Name As String)
name = Name
End Sub

End Class

Public Class NamedPerson
Inherits Person

Public Sub New(FirstName As String, LastName As String)
name = FirstName & " " & LastName
End Sub

'adding this makes it work
Public Sub New(Name As String)
MyBase.New(Name)
End Sub

End Class

'Valid
Dim guy1 As Person = New Person()

'Valid
Dim guy2 As Person = New Person("John Smith")

'Valid
Dim guy3 As NamedPerson = New NamedPerson("John", "Smith")

'Compiler Error
Dim guy4 As NamedPerson = New NamedPerson("John Smith")

最佳答案

子类不会从其基类型继承构造函数。子类负责定义它自己的构造函数。此外,它必须确保它定义的每个构造函数隐式或显式调用基类构造函数或链接到同一类型的另一个构造函数。

<强> For more info See: Instance Constructors

从您的示例类中,

Public Class NamedPerson
Inherits Person

Public Sub New(Name As String)
MyBase.New(Name)
End Sub

Public sub New(FirstName As String, LastName As String)
name = FirstName & " " & LastName
End Sub
End Class

关于vb.net - 尝试在 VB.NET 中调用重载构造函数时出现编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com