就是想从一个txt文件里读取每一行,然后把每行的内容存到一个类类型的数组的一个类成员变量里我这样用:XL[] xn = new XL[22];System.IO.TextReader tr = System.IO.File.OpenText("list.txt");
string tmp = tr.ReadLine();
for (int i = 0; tmp != null; i++ )
{
xn[i].a = Convert.ToString(tmp);
xn[i].b = "123123";
tmp = tr.ReadLine();
i++;
}
tr.Close();但是这样用不对,总提示说:“未将对象引用设置到对象的实例”该怎么用呢????求教了,谢谢

解决方案 »

  1.   

    xn[i].a是什么呢?
    你好像只是定义了xn,并没有给xn赋值
      

  2.   

    要是tmp是NULL你处理了吗?
      

  3.   

    xn[i].a = Convert.ToString(tmp);
    这行错了,而且tmp的值是对的,但是好像是不能这么用,我不知道该怎么用~~
      

  4.   


    XL[] xn = new XL[22];System.IO.TextReader tr = System.IO.File.OpenText("list.txt");
    string tmp = tr.ReadLine();
    for (int i = 0; tmp != null; i++ )
    {
    xn[i] = new XL();//加上这行
    xn[i].a = Convert.ToString(tmp);
    xn[i].b = "123123";
    tmp = tr.ReadLine();
    i++;
    }
    tr.Close();
      

  5.   

    请问starts2000,加的那行:xn[i] = new XL();//加上这行能解释一下么?
    我觉着下面这句:
    XL[] xn = new XL[22];
    已经实例化了呀为什么还要呢?
    谢谢了
      

  6.   

    你的tmp本来就是string的,为什么还要加convert呢?
      

  7.   

    XL[] xn = new XL[22];for (int i = 0; tmp != null; i++ )
    {
    xn[i]
    }xn 定义的长度是22,在for循环里面缺没限制他的长度
      

  8.   

    for (int i = 0; tmp != null; i++ )
    {
    xn[i] = new XL();//加上这行
    xn[i].a = Convert.ToString(tmp);
    xn[i].b = "123123";
    tmp = tr.ReadLine();
    i++;
    }对的,由于你XL是一个类,XL[] xn = new XL[22];//只实例化了xn数组.而后你要用xn[i]元素,且还要调用a,b,就应该对xn[i]元素实例化
      

  9.   

    for (int i = 0; tmp != null; i++ )
    {
    xn[i] = new XL();//加上这行
    xn[i].a = Convert.ToString(tmp);
    xn[i].b = "123123";
    tmp = tr.ReadLine();
    i++;
    }对的,由于你XL是一个类,XL[] xn = new XL[22];//只实例化了xn数组.而后你要用xn[i]元素,且还要调用a,b,就应该对xn[i]元素实例化
      

  10.   

    可是要一个由类的实例构成的数组,对于arraylist该怎么定义呢XL[] xn = new XL[22];
    这是定义类类型的
    那我该怎么用ArrayList保存类类型呢?谢谢了
      

  11.   

    可以这样啊:         xl[] xn = new xl[22];          //打开文件读取,然后关闭
            string[] temp = System.IO.File.ReadAllLines("d:\\test.txt",System.Text.Encoding.ASCII);
            int i = 0;
            for (; i < temp.Length;i++ )
            {
                xn[i].a = temp[i];
                xn[i].b = "123123";
            }
      

  12.   

    List<XL> lstXN = new List<XL>();
    System.IO.TextReader tr = System.IO.File.OpenText("list.txt");
    string tmp = tr.ReadLine();
    while(tmp != null)
    {
    XL xn = new XL();
    xn.a = Convert.ToString(tmp);
    xn.b = "123123";
    tmp = tr.ReadLine();
    lstXN.Add(xn);
    }
    tr.Close();
      

  13.   

    你那个list.txt写的是相对路径,那么list.txt在运行时后必须在可执行文件的同级目录下!否则就行绝对路径!应该是你的TextReader是空的!
      

  14.   

    你不是说有个位将对象引用到实例么,你那个TextReader跟踪了么,最有可能的就是那个对象是空的,原因是因为有可能list.txt那个文件不存在,你应该在项目里面添加这个文件,然后把"生成操作"改成"内容",把"复制到输出路径"改称"如果较新则复制"!
      

  15.   

    真是太谢谢楼上各位朋友了,学了不少东西又还有一个问题,就是我也想用ArrayList动态构造数组但是怎么构造类类型的动态数组呢???谢谢了
      

  16.   

    真是太谢谢楼上各位朋友了,学了不少东西又还有一个问题,就是我也想用ArrayList动态构造数组但是怎么构造类类型的动态数组呢???谢谢了
      

  17.   

    请教这个怎么转成ArrayList来用呢,谢谢了
      

  18.   

    ArrayList  xn=new ArrayList();
    XL x=new XL();
    xn.Add(x);
    顶21楼 List<XL>
      

  19.   

    List <XL> lstXN = new ArrayList <XL>(); 
    System.IO.TextReader tr = System.IO.File.OpenText("list.txt"); 
    string tmp = tr.ReadLine(); 
    while(tmp != null) 

    XL xn = new XL(); 
    xn.a = Convert.ToString(tmp); 
    xn.b = "123123"; 
    tmp = tr.ReadLine(); 
    lstXN.Add(xn); 

    tr.Close(); 
      

  20.   

    try this
    XL[] xn = new XL[22];System.IO.TextReader tr = System.IO.File.OpenText("list.txt");
    string tmp = tr.ReadLine();
    for (int i = 0; tmp != null; i++ )
    {
    xn[i].a = Convert.ToString(tmp);
    xn[i].b = "123123";
    tmp = tr.ReadLine();
    if(string.IsNullOrEmpty(tmp))
    break;
    }
    tr.Close();
      

  21.   

    tmp为什么还要加convert呢?人体艺术