Синтаксический эквивалент невозможен в C #, но есть несколько способов приблизить ту же функцию.
Вы можете имитировать доступ к типу индексатора, используя Dictionary
, но тогда вы потеряете стиль свойствадоступ.Для доступа в стиле свойств вы могли бы сделать нечто подобное в C #, используя анонимный тип, например:
var myType = new { e1="elem1",e2="elem2",e3="elem3",e4="elem4"};
var val1 = myType.e1;
Однако это не создает массив и не разрешает доступ к типу массива, а такжедопускайте изменения в типе после создания.
Чтобы получить более близкое приближение к функции JavaScript, вы можете использовать ExpandoObject
, чтобы подражать этому немного более близко, или вы могли бы реализовать что-то самостоятельно.
Для этого вам понадобится класс, который имеет конструктор для автоматической генерации свойств из переданного массива и предоставляет индексатор, который, в свою очередь, использует отражение для поиска именованного свойства.
Инициализация этого типа будет выглядеть примерно так:
var myType = new MyType(new[]{
{"e1", "elem1"},
{"e2", "elem2"},
{"e3", "elem3"},
{"e4", "elem4"}});
Предполагается, что для каждого определения элемента существует подтип (возможно, с использованием Tuple
или KeyValuePair
. В этом случае конструктор будет принимать IEnumerable<T>
этого типа.