我想读取并写入VectorOfFloat
的各个元素。问题在于没有定义setter,这使得括号+索引方式只能读取元素。
VectorOfFloat vector = new VectorOfFloat(5);
// vector[2] = 2.5F; // does not work
有一个解决方法:
ToArray()
Clear()
和Push()
float[] array = vector.ToArray();
array[2] = 2.5F;
vector.Clear();
vector.Push(array); // does work but is retarded
Console.WriteLine(vector[2]);
仅仅编写一个元素似乎非常麻烦是否有更直接的方法? 另外,如果我可以解决这个问题,那么缺少什么是值得的呢?
答案 0 :(得分:1)
评论是正确的。获取对非托管数组的访问权限的方法是通过StartAddress
属性返回IntPtr
。
lock(vector)
{
var ptr_array=(float*)vector.StartAddress.ToPointer();
ptr_array[4]=1.0f;
}