Я конвертирую приложение VB.Net в С# и заметил, что в коде VB.Net есть переменная частного члена, которая инициализируется с помощью Me
следующим образом:
Private m_ClassA As New MyCollection(Of ClassA)(Me)
Когда я конвертирую это в код С# следующим образом:
private MyCollection<ClassA> _classA = new MyCollection<ClassA>(this);
У меня есть ошибка
Аргумент
value
, тогда как тип параметраref
.
Если я положил ref
перед параметром this
, я получаю ошибку
не может использовать
this
в инициализаторе члена.
Я читал здесь, что члены инициализируются перед базовым классом, поэтому this
не может использоваться в членах, поскольку он еще не может быть инициализирован. Мой вопрос в том, почему это законно в VB.Net, а не С#?
Разве это не так, как компилятор обрабатывает его по-другому? Кажется странным, что у двух есть разные формы поведения.
Чтобы обойти это, я предполагаю, что инициализирую член в конструкторе.