我是一名C#开发人员,对VB.NET的经验不足。
场景:
Namespace Presenters
Public Class BaseFooPresenter
' assuming the public default parameterless constructor
Public Sub New(ByVal strvar As String)
' TODO with strvar variabile
End Sub
End Class
Public Class FooPresenter
Inherits BaseFooPresenter
Public Sub New(ByVal boolvar As Boolean)
' TODO with boolvar variabile
End Sub
Public Sub New(ByVal boolvar As Boolean, _
ByVal objvar As Object)
MyBase.New(String.Empty)
Me.New(true)
' TODO with objvar variabile
End Sub
End Class
End Namespace
在第二个FooPresenter构造函数中使用此代码会导致错误:
"Constructor call is valid only at the first statement in an instance constructor."
位置:
Me.New(true)
如果我反转顺序,我会在以下位置收到错误:
MyBase.New(String.Empty)
我可以创建一个方法SetValues(...参数...),并从两个构造函数中调用它,但是是否有人知道避免此错误的解决方法?为什么编译器不验证在重载构造函数之前调用基础构造函数的可能性呢?
有人知道如何在逻辑上证明不可能同时从一个类级构造函数调用基类构造函数和另一个类级构造函数吗?