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