我轉換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