string[] strs = line.Split(',');
if (strs[1] == "BEAM"){}
else if (int.Parse(strs[7]) == 0){}
else{}编译可以成功,运行时提示数组越界了 是怎么回事
读入的数据如下
2, WALL  ,   14,     6,     1,     2,   326,   325,     2,     1
33, BEAM  ,   14,    22,   416,    32,     0
 173, WALL  ,   14,     2,   174,   164,   798,   811,     2,    30
404, PLATE ,    2,    11,   381,   382,   361,     0,     2

解决方案 »

  1.   

    因为第二行本身就7个元素,最大索引是6,所以越界int.Parse(strs[7])
      

  2.   

    那要怎么改 我要判断strs【7】是不是等于0的
      

  3.   

    你是想判断第四行的strs[7]是否不等于0吧,那你就先看看当前行是第几行,再判断,因为你第二行长度只有7,所以这样感觉很不好
      

  4.   

    或者判断strs.Length是否>7再判断int.Parse(strs[7]) == 0
      

  5.   

    判断前,首先检查长度是否超过限制if(strs.Length>7)
      

  6.   

    前面的if (strs[1] == "BEAM")后面跟else不会把等于BEAM的行都略过吗
      

  7.   

    楼主是不是C程序写多了 呵呵  foreach (var l in File.ReadAllLines(name))
                {
                    int i;
                    if (l.Contains("BEAM"))
                    {
                       
                    }
                    else if(int.TryParse(l,out i) && i==0)
                    {
                       
                    }
                  
                }
      

  8.   

    会的
    要是觉得不保险,就写多个if语句吧
    if (strs[1] == "BEAM"){}if (!(strs[1] == "BEAM") && int.Parse(strs[7]) == 0){}
      

  9.   

    谢谢各位了,终于找出原因了,就是beam前后有空格,比较的时候没考虑