Список инициализатора объекта vb.net (T)

Я смотрел на некоторый код 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?

15
задан Tim B James 24 September 2012 в 14:10
поделиться

1 ответ

РЕДАКТИРОВАТЬ (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()
18
ответ дан 1 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: