2014-11-01 5 views
-3

Я сделал struct:Как обрабатывать массив структур в C#?

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(); 
} 

, но все 12 раз MsgBox от Render() функции говорит, что он «визуализирует» всегда первый треугольник (MODEL [0]).

+1

Что такое 'LocaPoint0',' LocalPoint1' и 'LocalPoint2'? – Mephy

+1

Вы упустили какой-то код, который может быть важен для вопроса - код для конструктора и где определен параметр LocalPoint [x] '. – Tim

+1

Можем ли мы увидеть все, что связано с Треугольником, которое имеет отношение к этой проблеме? То, как объявляются LocalPoints, может быть вашей проблемой. – Foggzie

ответ

2

Когда вы объявляете что-то как static, он становится общим для всех экземпляров вашего объекта. Сначала удалить статический модификатор образуют свои свойства структуры, то вы можете создать массивы в конструкторе вместо:

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 
    } 
}