嘿,我将一些C#代码转换为VB.net,并注意到C#代码有一个公共子新()。 C#代码是这样的:VB.net公共子新()发射功能
private readonly SController _controller;
public SView():this(new SController()) { }
public SView(SController controller)
{
InitializeComponent();
_controller = controller;
controller.EnumerateDevices(deviceDropdown.Items);
_thread = new Thread(ReadLoop) {IsBackground = true};
_thread.Start();
}
并转换上面VB.net:
Private ReadOnly _controller As SController
Public Sub New()
Me.New(New SController())
End Sub
Public Sub New(controller As SController)
InitializeComponent()
_controller = controller
controller.EnumerateDevices(deviceDropdown.Items)
_thread = New Thread(AddressOf ReadLoop) With { _
.IsBackground = True _
}
_thread.Start()
End Sub
我遇到的问题是,由于VB开头:
Private Sub SView_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
如何我可以告诉它关闭Public Sub New()函数吗?
我试图只是把:
Private Sub SView_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.New(New SController())
End Sub
但它给我的错误:
Constructor call is valid only as the first statement in an instance constructor.
任何帮助将是巨大的,解决这个问题!
更新
Private Sub SView_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim _sView As New SView
End Sub
它从来没有击中,当我把一个突破上线昏暗_sView作为新SView负载
'Sub New'是构造函数,它将在C#中同时触发 - 当您创建对象时。 – GSerg