我有一段代码,就是从几个格式相似的字符串里面读出相同位置的数据
         string[] gpsArr = gps.ReadFiletext();//一个数组型的字符串存储了我需要的几个字符串
         string[] londata = new string[100];
         string[] latdata = new string[100];
       
           for (int i = 0; i < gpsArr.Length; i++)
         {
             string strTemp = gpsArr[i];
             string[] lineArr = strTemp.Split(',');
             if (lineArr[0] == "$GPGGA")
             {
                latdata[i] = lineArr[2];
                londata[i] = lineArr[4];
             }
          }
在for循环里,如果取strTemp = gpsArr[0]指定某个字符串,最后latdata[i],londata[i] 就能输出正确的数据。
但是当取string strTemp = gpsArr[i]时,就会在下一句string[] lineArr = strTemp.Split(',');的地方报错说未将对象引用设置到对象的实例。不知道什么原因。希望各位前辈多多指教

解决方案 »

  1.   

    这种问题Debug下就知道哪里为null了~~
      

  2.   

    既然  string[] lineArr = strTemp.Split(',');这句抛异常了那就是strTemp为null了看看gps.ReadFiletext();这里面返回的值~
      

  3.   

    我之前已经将gpsArr[]存储的几个字符串在txtbox上显示了,确实是我需要的字符串。
    只是为什么strTemp = gpsArr[1]之类的就能存储数据,换成strTemp = gpsArr[i];就报错。还是不明白
      

  4.   

    看i是几的时候报错~~~不会是1吧?
    如果是1,你写成gpsArr[1]不报错,用变量i(=1)的时候就报错了,不可能的,仔细查查
      

  5.   

    调试一下,看一下,真实的值是什么吧。
    既然报这个异常了。。
    基本上可以确定strTemp 是 null 值了。
      

  6.   

    单步跟踪调试
    string strTemp = gpsArr[i];
    if(!string.IsNullOrEmpty(strTemp ))
    {string[] lineArr = strTemp.Split(',');
      if (lineArr.Length>0&7lineArr[0] == "$GPGGA")
      {
      latdata[i] = lineArr[2];
      londata[i] = lineArr[4];
      }
    }
      

  7.   

    谢谢指点,查了下原来是i < gpsArr.Length设置错了,这里应该是数组里面元素的个数。这里应该是调用string的哪个方法?
      

  8.   


    string strTemp = string.Empty;
    if(string.IsNullOrEmpty(gpsArr[i]))
         strTemp = gpsArr[i];
    ??
      

  9.   


    string strTemp = string.Empty;
    if(!string.IsNullOrEmpty(gpsArr[i]))
    {
         strTemp = gpsArr[i];
         //... ...
    }