我想初始化一系列轮廓。到目前为止的落叶工作:
Contour<Point> control_shapes1 = new Contour<Point>(new MemStorage());
Contour<Point>[] control_shapes = new Contour<Point>[13];
但这不起作用:
Contour<Point>[] control_shapes = new Contour<Point>(new MemStorage())[13];
幽冥:
Contour<Point>[] control_shapes = new Contour<Point>[13](new MemStorage());
(我应该提到所有这一切都是在全球范围内进行的第一次尝试。稍后我会尝试做得更好,但目前......)
如何正确完成初始化?
或者这不可能吗?
感谢您的帮助。
答案 0 :(得分:0)
初始化array
意味着您在堆上分配空间来存储数据。它将在初始化后设置其默认值,因此您仍然需要填充它。
for(int i = 0; i < control_shapes.Length; i++)
{
control_shapes[i] = new Contour<Point>(new MemStorage());
}
这是初始化数组的正确方法。
来自MSDN:
如果数组在声明时未初始化,则数组成员会自动初始化为数组类型的默认初始值。如果数组声明是一个类型的字段,那么当实例化该类型时,该数组将被设置为其默认值null。
答案 1 :(得分:0)
这是使用LINQ
的更简洁版本Contour<Point>[] control_shapes = Enumerable.Range(0, 13).Select(i => new Contour<Point>(new MemStorage())).ToArray();