I have been looking at some C# code:
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},
};
Now when I convert this to 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 _
} _
}
I get the error “Name of field or property being initialized in an object initializer must start with’.’.”
Now I can get an array of employee using the code:
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 _
} _
}
But I would like a List(Of Employee) as it is bugging me as to why this doesnt work in vb.net?
EDIT (2)
As pointed out in comments, VB.NET collection initializers have now been introduced, and a lot of the following post should be considered obsolete.
EDIT
Don’t always blindly trust the C# to VB.NET converter
Here’s a handy tool for online conversionTurns out VB.NET doesn’t have collection initializers. Which means there is no equivalence of
… but it does have object initializers. So you can create an instance of a class and assign values to its properties all in one go, but you cannot create an instance of a list and add items to it all in one go.
There closest you can get is in the link above. You can create an Array and add items to it in a single operation, and then you have to
ToListthat array.So this time I’ve actually compiled the code myself, and it works. Sorry for the hassle