嘿,我將一些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