Как я могу вставить новый объект в анонимный массив?

Как я могу вставить новый объект в анонимный массив?

var v = new[]
            {
                new {Name = "a", Surname = "b", Age = 1},
                new {Name = "b", Surname = "c", Age = 2}
            };

Я знаю, в первую очередь, что мы устанавливаем предел массива (размер).

Я преобразовываю его для Списка. Вставить новый объект.

v.ToList().Add(new { Name = "c", Surname = "d", Age = 3 });

Но тем не менее у меня есть 2 элемента в v переменной. Куда третий элемент пошел?

Но я не могу присвоить другой переменной Списка.

List newV = v.ToList();
5
задан uzay95 4 February 2010 в 13:31
поделиться

2 ответа

.ToList () создает новый объект списка, добавляя в него все элементы источника ввода, вашего массива. Таким образом, исходный массив вообще не изменяется.

Вы не можете добавлять элементы в существующий массив, он имеет фиксированный размер, единственное, что вы можете сделать, это вернуть новый массив в переменную.

Я не пробовал, но попробуйте следующее:

var l = v.ToList();
l.Add(...); // your existing add code
v = l.ToArray();

Но обратите внимание, что на этом этапе вы должны сначала понять, почему вы хотите использовать анонимные типы, я бы серьезно подумал о создании просто именованного типа и используя для начала список.

Обратите внимание, что вы не можете записать List l = v.ToList (); , поскольку тип списка является общим (он вернет некоторый List , а не только List . Для анонимных типов необходимо использовать var .

7
ответ дан 14 December 2019 в 08:49
поделиться

Это не «Список», а общий список, напечатанный на вашем анонимный тип. Из-за этого вы не сможете явно указать тип для этой операции. Вы должны либо использовать var newV = v.ToList (), либо ввести его как IEnumerable, который не является универсальным интерфейсом, который реализуют общие списки.

Приведенный выше код для добавления нового элемента тоже может не делать то, что вы думаете. Сейчас это не добавление нового элемента в v , а создание нового списка, добавление элемента в этот список, а затем список исчезает, потому что у вас нет ссылки на него. Вам нужно преобразовать v в список, а затем добавить элемент.

1
ответ дан 14 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

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