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
されるため、まだ初期化されていない可能性があるため、メンバーで使用できないことを読みました。私の質問は、C# ではなく VB.Net で合法なのはなぜですか?
これは、コンパイラの処理方法が異なるためですか? 2人の行動が違うのは奇妙に思えます。
それを回避するには、コンストラクターでメンバーを初期化すると思います。