Я смотрел на некоторый код C#:
List<Employee> Employees = new List<Employee>{
new Employee{firstname="Aamir",lastname="Hasan",age=20},
new Employee{firstname="awais",lastname="Hasan",age=50},
new Employee{firstname="Bill",lastname="Hasan",age=70},
new Employee{firstname="sobia",lastname="khan",age=80},
};
Теперь, когда я преобразовываю это в vb.net
Dim Employees as List(Of Employee) = New List(Of Employee)() With { New Employee() With { _
.firstname = "Aamir", _
.lastname = "Hasan", _
.age = 20 _
}, _
New Employee() With { _
.firstname = "awais", _
.lastname = "Hasan", _
.age = 50 _
}, _
New Employee() With { _
.firstname = "Bill", _
.lastname = "Hasan", _
.age = 70 _
}, _
New Employee() With { _
.firstname = "sobia", _
.lastname = "khan", _
.age = 80 _
} _
}
Я получаю ошибку "Название поля, или свойство, инициализируемое в объектном инициализаторе, должно запуститься с'. '."
Теперь я могу получить массив сотрудника, использующего код:
Dim Employees = { New Employee() With { _
.FirstName = "Aamir", _
.LastName = "Hasan", _
.Age = 20}, _
New Employee() With { _
.FirstName = "Awais", _
.LastName = "Hasan", _
.Age = 50}, _
New Employee() With { _
.FirstName = "Bill", _
.LastName = "Hasan", _
.Age = 70 _
} _
}
Но я хотел бы a List(Of Employee)
поскольку это прослушивает меня относительно того, почему это не работает в vb.net?
РЕДАКТИРОВАТЬ (2)
Как указано в комментариях, теперь были введены инициализаторы коллекций VB.NET , и многие из следующих сообщений следует считать устаревшими.
РЕДАКТИРОВАТЬ
Не всегда слепо доверяйте конвертеру C # в VB.NET
Вот удобный инструмент для онлайн-преобразования
Оказывается, VB.NET не имеет инициализаторов коллекций . Это означает, что нет эквивалента
var myList = new List<string>()
{
"abc",
"def"
};
... но у есть инициализаторы объектов. Таким образом, вы можете создать экземпляр класса и присвоить значения его свойствам за один раз, но вы не можете создать экземпляр списка и добавлять элементы к нему за один раз.
Самое близкое, что вы можете получить, находится по ссылке выше. Вы можете создать массив и добавить в него элементы за одну операцию, а затем вам нужно будет ToList
этого массива.
На этот раз я сам скомпилировал код, и он работает. Извините за хлопоты
Dim EmployeesTemp As Employee() = { _
New Employee() With { _
.firstname = "Aamir", _
.lastname = "Hasan", _
.age = 20 _
}, _
New Employee() With { _
.firstname = "awais", _
.lastname = "Hasan", _
.age = 50 _
}, _
New Employee() With { _
.firstname = "Bill", _
.lastname = "Hasan", _
.age = 70 _
}, _
New Employee() With { _
.firstname = "sobia", _
.lastname = "khan", _
.age = 80 _
} _
}
Dim Employees as List(Of Employee) = EmployeesTemp.ToList()