0

当我创建一个具有恒定大小的数组时,我试图了解幕后发生的事情,如下所示:

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public float[] constArray;

我知道我可以使用fixed关键字,但ref不再是选项,并且所有指针操作都必须在固定表达式内。

我要做的是解析一个 XML 文件并存储在数组中的给定索引处。因此,如果文件中有 10 个元素,我可能会设置以下内容:

for (int i = 0; i < 10; i++)
{
    readElement("element", ref constArray[i]);
}

然而,constArray[i]null

也许需要进一步的实例化,但是编组的意义何在。我认为编组创建了ref用于创建引用的对象。

我通读了引用类型值类型,但没有找到太多信息。我还阅读了其他一些内容,例如ref引用数组,但进展不大。

我似乎可以找到一个提供良好概念理解的资源。因此,我们将不胜感激任何资源以及答案。

谢谢你,布莱克

4

1 回答 1

1

首先 -float不能为空(如果你想要可以为空的浮点数然后使用float?),所以你的问题可能出在未初始化的数组中?

总括MarshalAs

指示如何在托管代码和非托管代码之间封送数据。

那是你要的吗?或者您的目标是否简单如下

float [] constArray = new float[10];

你确定你需要简单的数组 - 为什么不使用List<float>

于 2012-08-29T08:32:24.533 回答