如何将新对象插入匿名数组?

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

我知道首先我们设置了数组的limit(size)。

我将其转换为列表。插入一个新对象。
v.ToList().Add(new { Name = "c", Surname = "d", Age = 3 });

但是我仍然在v变量中有2个元素。第三要素去哪儿了?

但是我不能分配给另一个List变量。
List newV = v.ToList();

最佳答案

.ToList()产生一个新的列表对象,将输入源的所有元素(即数组)添加到其中。因此,原始数组完全不会更改。

您不能将元素添加到现有数组中,因为数组具有固定的大小,唯一可以做的就是将新数组放回变量中。

我没有尝试过,但是尝试一下:

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

但是,请注意,此时您应该首先查看为什么要使用匿名类型,我会认真考虑仅创建一个命名类型并使用列表作为开始。

请注意,您不能编写List l = v.ToList();,因为列表的类型是通用的(它将返回一些List<some-anonymous-type-here>,而不仅仅是List。对于匿名类型,您需要使用var

关于c# - 如何将新对象插入匿名数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2199961/

10-17 01:48