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

本文关键字:轮廓 数组 初始化 memstorage 何使用 | 更新日期: 2023-09-27 18:29:55

我想初始化一个轮廓数组。到目前为止,叶面修剪是有效的:

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

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

初始化是如何正确完成的?

还是这是不可能的?

谢谢你的帮助。

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

这里有一个使用LINQ 的更简洁的版本

Contour<Point>[] control_shapes = Enumerable.Range(0, 13).Select(i => new Contour<Point>(new MemStorage())).ToArray();
初始化array意味着在堆上分配空间来存储数据。它将在初始化后设置其默认值,所以您仍然需要填充它
for(int i = 0; i < control_shapes.Length; i++)
{
    control_shapes[i] = new Contour<Point>(new MemStorage());
}

这是初始化数组的正确方法。

来自MSDN:

如果数组在声明时未初始化,则数组成员会自动初始化为数组类型的默认初始值。如果数组声明是一个类型的字段,那么当类型被实例化时,数组将被设置为其默认值null。