我有一个c#对象,它设置2个浮点数的值。我有很多这样的东西。 我想将这些浮点数存储在数组中。所以布局将是这样的:
给定一个float数组:float [] vec = new float [6]
对象1设置vec [0]和vec [1]的值 对象2设置vec [2]和vec [3]的值 对象3设置vec [4]和vec [5]
的值如何在对象上存储引用,以便它们访问正确的向量元素?我可以存储索引,但在老式的c ++世界中,我可以将指针直接存储到数组中。
答案 0 :(得分:4)
当我需要使用C风格的指针指向数组的中间时,我只创建一个包含对数组和当前索引的引用的通用结构,并使用它。随意窃取我的代码:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/10/references-and-pointers-part-two.aspx
答案 1 :(得分:1)
C#是专门设计的,因此您无法在安全的托管代码中存储对数组元素或其他“非根”内存位置的引用。具有这样的引用会使垃圾收集变得非常复杂,并且C中的这种能力是引入令人讨厌的错误的已知潜在罪魁祸首。例如,您可以在C中在堆栈上分配一个数组,并将引用传递给数组元素。如果在展开堆栈后保留该引用,它现在指向任意位置并写入引用可能导致数据损坏。
答案 2 :(得分:0)
您可以使用PointF
之类的结构:
PointF[] points = new PointF[3];
Console.WriteLine("X:{0}, Y:{0}", points[0].X, points[0].Y);
或者您可以创建自己的结构:
public struct Vector
{
public int X;
public int Y;
}