将对象添加到列表的语法?

时间:2012-07-20 20:51:31

标签: c#

我试图找出将复杂对象添加到列表中的语法。这就是我所知道的:

ComplexObject temp = new ComplexObject() {attribute1 = 5, attribute2 = 6};
ComplexObjectList.Add(temp);

以下是我想做的事情:

ComplexObjectList.Add(new ComplexObject(){attribute1 = 5, attribute2 = 6});

我意识到它不起作用,但有没有其他方法可以将一个添加到我的列表而不事先创建一个?除了这个函数调用之外,我不需要temp。

2 个答案:

答案 0 :(得分:3)

假设您有这个类(要点必须是可访问的构造函数,并且您希望设置的属性必须是可见的):

public class Point
{
    public int X { get; set; }
    public int Y { get; set; }
}

你有这个清单:

var listOfPoint = new List<Point>();

然后你可以,正如你的第二个例子思考,这样做:

listOfPoint.Add(new Point { X = 13, Y = 7 });

大致(有一些细微差别,Eric Lippert对此有一些好的读数)等同于你的第一个例子:

var temp = new Point { X = 13, Y = 7 };
listOfPoint.Add(temp);

实际上,您也可以在构建列表时添加点:

var listOfPoint = new List<Point>
    {
         new Point { X = 7, Y = 13 }
    };

现在你说你已经意识到它没有工作&#34;令人费解的是因为您的初始化程序语法是正确的,因此我不确定您是否在尝试之前询问,或者您的列表或类别的声明是否存在问题而导致您失败。也就是说,如果您编写了第一个代码片段,那么技术上应该是您的第二个代码片段。

答案 1 :(得分:1)

您的代码应该有效。如果没有,那么问题可能出在ComplexObjectList的声明中。 应该是:List<ComplexObject> ComplexObjectList = new List<ComplexObject>(); 还要确保类属性是公共的。