Может кто-нибудь объяснить, как New работает с ключевым словом With в этом примере из инфраструктуры MVC.
New
With
routes.MapRoute("Default", "{controller}/{action}/{id}", New With {.controller = "Home", .action = "Index", .id = ""})
Этот синтаксис используется для создания анонимного типа в VB.Net.
Позволяет определять тип на лету с помощью набора пар имя / значение. Все имена превращаются в свойства типа. Если вы откроете сгенерированную сборку в отражателе, вы сможете увидеть эти типы.
Не позволяйте части с синтаксисом обмануть вас. Эта функция не имеет ничего общего с контекстной функцией «С» в VB.Net. Кроме "." префикс в именах значений.
Здесь "new" объявляет анонимный класс.
Этот класс не имеет формального определения (т. Е. Нет определения "Public Class"), его структура определяется элементами в фигурных скобках после символа with. Таким образом, он определяет и создает класс в одном выражении.
Создает новый анонимный класс с указанными свойствами.
Дополнительная информация от MSDN .