Эквивалент VB.Net для инициализатора индексатора - PullRequest
0 голосов
/ 26 июня 2019

Есть ли VB.NET, эквивалентный конструкции инициализатора индексатора C # 6?

var placesByZip = new Dictionary<string, string>
     {
         ["63368"] = "Dardenne Prairie",
         ["63141"] = "Des Peres",
         ["63101"] = "St. Louis"
     };

- Edit -

Проще говоря, я ищу инициализатор индексатора (который является инициализатором объекта), а не инициализатор коллекции.

Более подробную информацию о разнице можно найти в конце этой записи в блоге .

- Правка2:

Из упомянутого блога решение должно позволить сделать это:

Снова хочу повторить, что инициализатор индексатора не является типом Collection Initializer, это тип Object Initializer. Почему Я продолжаю говорить это? Почему это различие важно? Потому что ты не может смешивать инициализаторы объектов и инициализаторы коллекций в одном и том же список инициализации.

Итак, мы не можем инициализировать коллекцию и установить свойство в том же список инициализации, но мы можем установить свойство, поле и индексатор в один и тот же список инициализации, так как все они являются действительными объектами Инициализаторы.

Ответы [ 4 ]

2 голосов
/ 27 июня 2019
0 голосов
/ 27 июня 2019

По состоянию на 2019-06-27, VB.NET версия 15.8 (VS 2017), инициализация объекта из проиндексированных элементов не разрешена согласно документации Microsoft по инициализаторам объекта .

Инициализируемые члены класса не могут быть проиндексированы или квалифицированы

Для полноты картины это также не упоминается в документации инициализаторов коллекции .

0 голосов
/ 26 июня 2019

Это

    Dim placesByZip As New Dictionary(Of String, String) From {
        {"63368", "Dardenne Prairie"},
        {"63141", "Des Peres"},
        {"63101", "St. Louis"}}

Инициализаторы сбора

0 голосов
/ 26 июня 2019

должно быть

Dim placesByZip as New Dictionary(Of String, String) From {
{"63368", "Dardenne Prairie"}, 
{"63141", "Des Peres"},
{"63101", "St. Louis"}
}

(никогда раньше не пробовал)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...