我正在将一个VB.Net应用程序转换为C#,并注意到在VB.Net代码中,有一个私有成员变量,它使用Me如下初始化:
Private m_ClassA As New MyCollection(Of ClassA)(Me)
Run Code Online (Sandbox Code Playgroud)
当我将其转换为C#代码时,如下所示:
private MyCollection<ClassA> _classA = new MyCollection<ClassA>(this);
Run Code Online (Sandbox Code Playgroud)
我有错误
理由是
value虽然参数类型ref.
如果我把ref参数放在前面this,我就会收到错误
不能
this在成员初始化程序中使用.
我在这里读到成员在基类之前被初始化,因此this不能在成员中使用,因为它可能尚未初始化.我的问题是为什么它在VB.Net中合法而不是C#?
这是由编译器以不同方式处理它吗?这两个人有不同的行为似乎很奇怪.
为了解决它,我想我将在构造函数中初始化成员.