索引超出了数组界限

.Net技术 码拜 9年前 (2016-03-01) 1061次浏览
通过点击comp来获得他的名字和坐标,然后把名字依次显示在textbox中,然后根据textbox中name的数量来确定b数组的行数,再计算textbox中name所对应的comp之间的距离,可是为什么提示 b[x][0] = matrix[0];索引超出了数组界限?求指导

for (int i = 0; i < Selection.ItemCount; i++)
                {                   
                    comp = (IvcComponent)Selection.getItem(i);
                    object name = comp.getProperty("Name");
                    double[] matrix = (double[])comp.RootNode.getProperty("WorldPositionMatrix"); //获得坐标xyz
                    if (textBox5.Text != "")
                    {
                        textBox5.Text += "->" + name.ToString();
                    }
                    else
                    {
                        textBox5.Text = name.ToString();
                    }
                    string[] tmp = textBox5.Text.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); //得到拆分项
                    double sum = 0;
                    for (int x = 0; x < tmp.Length; x++)//根据拆分项确定行数
                    {
                        b[x][0] = matrix[0];
                        b[x][1] = matrix[1];
                        b[x][2] = matrix[2];
                        double xd = b[x][0] - b[x + 1][0];
                        double yd = b[x][1] - b[x + 1][1];
                        double zd = b[x][2] - b[x + 1][2];
                        sum += Math.Sqrt(xd * xd + yd * yd + zd * zd);
                        //listBox1.Items.Add("distance = " + sum);
                    } 
                    
                }
解决方案

40

数组定义后据不能改变大小
既然你的 tmp 是可变长度的,不如将 b 定义成 List
var b = new List<double[]>();
另外 double xd = b[x][0] – b[x + 1][0]; 也有潜在的问题
前面刚对 b[x] 赋值,接下里就要取 b[x+1] 的值,显然是不对的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明索引超出了数组界限
喜欢 (0)
[1034331897@qq.com]
分享 (0)