Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理C#中的结构数组?_C#_Arrays_Struct_Static_Void - Fatal编程技术网

如何处理C#中的结构数组?

如何处理C#中的结构数组?,c#,arrays,struct,static,void,C#,Arrays,Struct,Static,Void,我做了一个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("PROCE

我做了一个
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();
}
(i=0;i<12;i++)的

{
模型[i].Render();
}

但是
Render()
函数中的所有12次msgbox表示,它始终“渲染”第一个三角形(模型[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
    }
}

什么是
LocaPoint0
LocalPoint1
LocalPoint2
?您遗漏了一些可能对问题很重要的代码-构造函数的代码以及定义了
LocalPoint[x]
的位置。我们可以从三角形中看到与此问题相关的所有内容吗?LocalPoints的声明方式可能是您的问题。查看构造函数,可以推断
LocalPointx
是一个包含x、y和z值的数组。假设数组是结构的一部分,那么发布的代码应该可以工作。如果不是,那么其他代码也会出错。如果没有可以复制的完整代码片段,这是一个猜测游戏。数组在结构中,但它们被声明为
静态
——这意味着无论创建多少结构,每个数组只有一个副本。去掉
静态
修饰符。