2016-02-12 57 views
1

我採取這種結構定義從Windows API CodePack翻譯C#構造函數來Vb.Net相當於

public struct IconReference 
{ 
    //... 

    public IconReference(string moduleName, int resourceId) 
     : this() 
    { 
     //... 
    } 

    public IconReference(string refPath) 
     : this() 
    { 
     //... 
    } 

    //... 
} 

的問題是我不知道如何將這些類型的構造函數來Vb.Net的翻譯。

什麼是那個: this()的含義?

當我使用在線代碼翻譯器時,它將其翻譯爲Me.New(),但是,由於該結構沒有無參數ctor,因此編譯失敗。

+3

看看,有什麼目的吧,一個結構不能有一個默認的構造函數。只是省略。 –

回答

3

C#中的this()調用無參數構造函數。由於您在C#中沒有無參數構造函數(並且結構甚至不能包含「顯式無參數構造函數」),因此可以省略this()

等等的VB.NET代碼。您可以省略Me.New()的代碼。

+0

是的,可以在Vb.Net中指定一個默認的構造函數,但是MSDN的指導原則說這是不正確的,我不確定爲什麼WindowsAPICodePack會這樣做,但是如果我可以忽略它,那麼問題就解決了,謝謝。 – ElektroStudios

+1

不客氣。 VB.NET在VS2015中給了我一個錯誤,但在Ideone中沒有,所以我認爲他們使用了過時的編譯器。可能這已經在最新版本的VB.NET編譯器中「固定」了。 –

+0

如果您在C#中省略了對默認構造函數的調用,您將遇到[編譯器錯誤](https://msdn.microsoft.com/zh-cn/library/bb513821.aspx),因爲該類會自動實施財產。 – sloth