我转换VB.Net应用到C#,并已注意到,在VB.Net代码中,有一个私有成员变量,这是使用Me
这样初始化:为什么在C#在这个成员的初始值是不允许的,但在VB.Net我被允许
Private m_ClassA As New MyCollection(Of ClassA)(Me)
当我将它转换为C#代码是这样的:
private MyCollection<ClassA> _classA = new MyCollection<ClassA>(this);
我有错误
参数是
value
而参数类型是ref
。
如果我在参数this
前面放ref
,我得到的错误
不能在成员初始使用
this
。
我在这里读了成员的基类初始化之前,所以this
不能在成员使用,因为它可能尚未被初始化。我的问题是为什么它在VB.Net合法而不是C#?
这是下降到编译器的不同处理呢?这两个人有不同的行为似乎很奇怪。
要解决它,我想我会在初始化的构造器的成员。
听起来像你已经回答你的问题。 – Jodrell 2013-03-13 09:18:21
什么是MyCollection? – LukeHennerley 2013-03-13 09:22:17
什么是'ClassA'和'MyCollection'?很容易做出错误的假设......'MyCollection'是否声明了一个不必要的'ref'参数? – 2013-03-13 09:23:37