Динамический синтаксис в С#
В последнее время я сталкивался с примерами на С#, которые используют синтаксис, который выглядит следующим образом:
var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };
Мне это очень нравится. Похоже на JSON. Однако я не знаю, как называется этот синтаксис. По этой причине я не уверен, как узнать больше об этом. Я действительно заинтересован в том, чтобы выяснить, как определить массивы объектов в результате. Например, что, если я хочу вернуть массив элементов для prop3? Как это будет выглядеть? Что называется этим синтаксисом?
Ответы
Ответ 1
В С# это называется Анонимные типы.
Чтобы вернуть массив, вы можете просто вставить его:
var result = new { prop1 = "hello", prop2 = "world", prop3 = new int[] {1,2,3} };
Или объявите его заранее и используйте его:
int[] array = new int[] {1,2,3};
var result = new { prop1 = "hello", prop2 = "world", prop3 = array};
Ответ 2
он назвал анонимные типы. Для возврата массива объектов в prop3 вы должны написать
var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { "h", "e", "l", "l", "o" } };
Я использую строки, но одинаковы для любого типа объекта:
var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { new YourType(), new YourType(), new YourType() } };
Обратите внимание, что тип объектов в массиве не требуется в объявлении массива; вам не нужно писать new YourType[]
, компилятор ему не нужен, а IMO - чище, просто используйте new[]
Ответ 3
Несколько новых возможностей здесь:
Вы можете объединить эти функции, чтобы сформировать анонимный тип . Поскольку вам не нужно объявлять или конструировать тип во время компиляции, вы можете объявить этот объект, и компилятор сделает соответствующий тип и построит его для вас в IL.
Ответ 4
Это инициализаторы объектов и коллекций. См. http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx.
Ответ 5
Следующий код является примером анонимного типа с использованием инициализатора объекта
var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };
для получения дополнительной информации см. Анонимные типы (Руководство по программированию на С#) и Объект и Инициализаторы коллекции (Руководство по программированию на С#)