如何在C#中处理结构数组
本文关键字:处理 结构 数组 | 更新日期: 2023-09-27 18:28:49
我做了一个struct
:
public struct Triangle
{
public Triangle(double LP0x, double LP0y, double LP0z, double LP1x, double LP1y, double LP1z, double LP2x, double LP2y, double LP2z)
{
}
public void Render()
{
MessageBox.Show("PROCESSING:'n"+ LocalPoint0[0].ToString() + LocalPoint0[1].ToString() + LocalPoint0[2].ToString() + "'n" +
LocalPoint1[0].ToString() + LocalPoint1[1].ToString() + LocalPoint1[2].ToString() + "'n" +
LocalPoint2[0].ToString() + LocalPoint2[1].ToString() + LocalPoint2[2].ToString());
}
}
然后我把这个放进数组:
static Triangle[] MODEL = new Triangle[12]{
new Triangle(1,1,1,-1,1,1,1,1,-1),
new Triangle(1,1,-1,-1,1,-1,-1,1,1),
};
然后我试着处理它:
for (i = 0; i < 12; i++)
{
MODEL[i].Render();
}
但Render()
函数的12次消息框都说,它总是"渲染"第一个三角形(MODEL[0])。
当您将某个东西声明为静态时,它将在对象的所有实例之间共享。首先从结构属性中删除静态修饰符,然后可以在构造函数中创建数组:
private struct Triangle
{
double[] LocalPoint0;
double[] LocalPoint1;
double[] LocalPoint2;
public Triangle(double LP0x, double LP0y, double LP0z, double LP1x, double LP1y, double LP1z, double LP2x, double LP2y, double LP2z)
{
LocalPoint0 = new double[3];
LocalPoint1 = new double[3];
LocalPoint2 = new double[3];
//snip
}
}