【发布时间】:2014-11-01 23:11:00
【问题描述】:
我发了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 次 msgbox 都说,它总是“渲染”第一个三角形(MODEL[0])。
【问题讨论】:
-
什么是
LocaPoint0、LocalPoint1和LocalPoint2? -
您遗漏了一些可能对问题很重要的代码 - 构造函数的代码以及定义
LocalPoint[x]的位置。 -
我们能看到 Triangle 中与此问题相关的所有内容吗? LocalPoints 的声明方式可能是您的问题。
-
看构造函数,可以推断
LocalPointx是一个数组,里面保存了x、y、z的值。假设数组是结构的一部分,那么发布的代码应该可以工作。如果不是,那么其他一些代码正在干扰。没有完整的可以复现的代码sn-p,就是猜谜游戏。 -
数组在结构中,但它们被声明为
static- 这意味着无论您创建多少结构,每个数组都只有一个副本。去掉static修饰符。
标签: c# arrays struct static void