Sto convertendo un'app VB.Net in C# e ho notato che nel codice VB.Net c'è un membro privato variabile, che viene inizializzata usando Me
come questo:Perché in C# non è consentito nell'inizializzatore membro, ma in VB.Net Me è consentito
Private m_ClassA As New MyCollection(Of ClassA)(Me)
Quando ho convertire questo codice C# in questo modo:
private MyCollection<ClassA> _classA = new MyCollection<ClassA>(this);
ho l'errore
L'argomento è
value
mentre il tipo di parametro èref
.
Se metto ref
davanti al parametro di this
, ottengo l'errore
non possono utilizzare
this
negli Stati initializer.
Ho letto qui che i membri sono inizializzati prima della classe base, e così this
non possono essere utilizzati nei membri in quanto non può ancora essere inizializzato. La mia domanda è: perché è legale in VB.Net e non in C#?
E 'il compilatore che lo gestisce diversamente? Sembra strano che i due abbiano comportamenti diversi.
Per aggirarlo suppongo di inizializzare il membro nel contructor.
sembra che tu abbia già risposto alla tua domanda. – Jodrell
Che cos'è 'MyCollection'? – LukeHennerley
Cosa sono 'ClassA' e' MyCollection'? È facile fare supposizioni che potrebbero essere sbagliate ... 'MyCollection' è stato dichiarato con un parametro' ref' non necessario? –