2016-02-12 79 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