我试图找出将复杂对象添加到列表中的语法。这就是我所知道的:
ComplexObject temp = new ComplexObject() {attribute1 = 5, attribute2 = 6};
ComplexObjectList.Add(temp);
以下是我想做的事情:
ComplexObjectList.Add(new ComplexObject(){attribute1 = 5, attribute2 = 6});
我意识到它不起作用,但有没有其他方法可以将一个添加到我的列表而不事先创建一个?除了这个函数调用之外,我不需要temp。
答案 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>();
还要确保类属性是公共的。