如何使用memstorage初始化轮廓数组

时间:2014-11-09 11:30:26

标签: c# emgucv

我想初始化一系列轮廓。到目前为止的落叶工作:

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());

(我应该提到所有这一切都是在全球范围内进行的第一次尝试。稍后我会尝试做得更好,但目前......)

如何正确完成初始化?

或者这不可能吗?

感谢您的帮助。

2 个答案:

答案 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();