如何使用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());
(我应该提到的是,所有这些都是在全球范围内第一次尝试。稍后我会尝试做得更好,但目前…)
初始化是如何正确完成的?
还是这是不可能的?
谢谢你的帮助。
这里有一个使用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。