0

我正在尝试找出将复杂对象添加到列表中的语法。这是我所知道的有效方法:

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

这就是我想要做的:

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

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

4

2 回答 2

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 }
    };

现在,您说您“意识到它不起作用”这一事实令人费解,因为您的初始化程序语法是正确的,所以我不确定您是在尝试之前询问,还是声明存在问题你的名单或你的班级让你失望。也就是说,如果您的第一个代码片段已编译,那么从技术上讲,您的第二个代码片段也应该如此。

于 2012-07-20T21:03:03.543 回答
1

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

于 2012-07-20T21:01:29.207 回答