Ich konvertiere eine VB.Net App in C#, und habe festgestellt, dass in der VB.Net-Code ist ein privates Mitglied Variable, die Me
wie dies mit initialisiert:Warum in C# ist dies nicht in Member-Initialisierer erlaubt, aber in VB.Net ist mir erlaubt
Private m_ClassA As New MyCollection(Of ClassA)(Me)
Wenn ich wandeln diese # Code wie folgt zu C:
private MyCollection<ClassA> _classA = new MyCollection<ClassA>(this);
ich habe den Fehler
Argument ist
value
, während Parametertypref
ist.
Stecke ich ref
vor dem Parameter this
, erhalte ich die Fehler
nicht
this
in Elementinitialisierung verwenden können.
Ich habe hier gelesen, dass die Mitglieder vor der Basisklasse initialisiert werden, und so this
können nicht Mitglieder verwendet werden, da es noch nicht initialisiert werden kann. Meine Frage ist, warum ist es legal in VB.Net und nicht C#?
Liegt das daran, dass der Compiler anders damit umgeht? Es scheint komisch, dass die beiden unterschiedliche Verhaltensweisen haben.
Um es zu umgehen, ich denke, ich werde das Mitglied im Konstruktor initialisieren.
klingt wie Sie bereits beantwortet Sie Frage. – Jodrell
Was ist 'MyCollection'? – LukeHennerley
Was sind 'ClassA' und' MyCollection'? Es ist leicht, Annahmen zu treffen, die falsch sein könnten ... Wurde 'MyCollection' mit einem unnötigen Ref-Parameter deklariert? –