2013-12-15 82 views
-2

我想VB .NET代碼轉換爲C#,但我有下面的代碼的問題:如何從vb轉換此代碼。淨到C#?

Dim MI_Display_Channel As New MethodInvoker(AddressOf display_channel) 

Private Sub display_channel() 
    TextBox1.Text = fv_channel 
End Sub 

我如何這段代碼轉換成C#?

+2

我很驚訝這個問題還沒有結束。 – Cilan

+1

你的問題是什麼? –

+1

如果您遇到代碼問題,如何將其轉換爲C#幫助?它仍然是相同的問題相同的代碼! – Jashaszun

回答

1

here,你會得到這樣的:

MethodInvoker MI_Display_Channel = new MethodInvoker(display_channel); 
private void display_channel() 
{ 
    TextBox1.Text = fv_channel; 
} 

我不知道爲什麼它是困難的。

+0

它看起來像一個實例字段上的字段初始值設定項,其中使用了另一個實例成員(在'this'上)。這是不允許的。請嘗試編譯它!說'新的DelegateType(...)'是相當多餘的;可以使用方法組轉換。爲什麼一個實例成員使用多餘的'private'修飾符,而另一個實例成員忽略它?另請參閱我的答案。 –

+0

@JeppeStigNielsen是的,你有一個好點 - 我沒有嘗試編譯,應該有。你的回答更好,所以你會得到我的讚賞。我將在此留下轉換鏈接。 –

4

我看到兩個答案機器翻譯在哪裏,顯然,一個實例字段的字段初始值設定項引用該類的實例成員。這是不允許的。

要明確:

class Xxx 
{ 
    MethodInvoker MI_Display_Channel = display_channel; // compile-time error! 

    void display_channel() 
    { 
    TextBox1.Text = fv_channel; 
    } 
} 

將無法​​編譯。當字段初始化不允許在字段初始值設定項中使用構造函數:

class Xxx 
{ 
    public Xxx() // other instance constructors may want to chain : this() 
    { 
    MI_Display_Channel = display_channel; // fine 
    } 

    MethodInvoker MI_Display_Channel; // no initializer here 

    void display_channel() 
    { 
    TextBox1.Text = fv_channel; 
    } 
}