结构体数组索的值一直为0,求指导

.Net技术 码拜 8年前 (2016-03-01) 869次浏览
本人想在添加按钮点击的时候纪录下组件名字,并输出在textbox5中,然后顺便记录下坐标,然后再在计算按钮中调用,并计算全部在textbox5中显示的组件的距离和,在textbox6中显示距离和,可是运行下来,textbox6的显示一直是0,这是为什么啊?是哪里逻辑不对吗?小白勿喷…

public struct MY_POS
    {
        public double x;
        public double y;
        public double z;
    }
 private void 纪录_Click(object sender, EventArgs e)      // 人行走路径点击选择
        {
            IvcSelection Selection = app.findSelection("Component");
                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");//获得坐标下x,y,z的坐标
                    if (textBox5.Text != "")
                    {
                        textBox5.Text += "->" + name.ToString();
                    }
                    else
                    {
                        textBox5.Text = name.ToString();
                    }
                    string[] tmp = textBox5.Text.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);//根据textbox的输出分割得到pos[]是行数
                    MY_POS [] pos = new MY_POS[tmp.Length];
                    for (int W = 0; W < tmp.Length; W++)
                    {
                        pos[W].x = matrix[0];
                        pos[W].y = matrix[1];
                        pos[W].z = matrix[2];
                    }
               }
        }
private void 计算_Click(object sender, EventArgs e)    
        {
            string[] tmp = textBox5.Text.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            double sum = 0;
            MY_POS[] pos = new MY_POS[tmp.Length];
            for (int W = 0; W < tmp.Length; W++)
            {
                double xd = pos[W].x - pos[W + 1].x; 
                double yd = pos[W].y - pos[W + 1].y;
                double zd = pos[W].z - pos[W + 1].z;
                sum += Math.Sqrt(xd * xd + yd * yd + zd * zd);
                textBox6.Text = sum.ToString();
            }
        }
解决方案

50

24 行处定义的 pos 是局部变量
25 ~ 30 行对他的赋值,在方法结束后就丢失了
37 行处定义了 pos,但赋的是空值
38 ~ 45 只是在对一个空值数组在做计算

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明结构体数组索的值一直为0,求指导
喜欢 (0)
[1034331897@qq.com]
分享 (0)