List<Graph>[] GraData = new List<Graph>[]{};

解决方案 »

  1.   

      static public List<Graph>[] GraData = new List<Graph>[100];
    Graph arc;
     arc = new Graph(a, b, c, d);
     GraData[0] = new List<Graph>();
     GraData[0].Add(arc);
      

  2.   


    改成你这般定义也不行,
        GraData[0].Add(arc);
    还是执行到这句就出错
      

  3.   

    GraData[0].Add(arc);
    改成
    GraData.Add(arc);
      

  4.   

    List<Graph>[] GraData = new List<Graph>[100];
    这种用法,就跟二维锯齿数组一样用
    比如string[ ][ ]
    你只对一维数组进行了初始化,但是里面的第二维,还都是null,必然报错
    你需要先
    GraData[0]=new List<Graph>();
    然后再使用GraData[0].Add(arc);
      

  5.   


    改成你这般定义也不行,
        GraData[0].Add(arc);
    还是执行到这句就出错
    使用ArrayList 储存你的List
      

  6.   

    看5楼
    其实2楼就已经给出代码了,只不过你没仔细看
    涉及到二维数组,你每一维都需要初始化,只初始化一维,没初始化二维,里面还都是null啊
      

  7.   


                for (int i = 0; i < 100;i++ )
                {
                    GraData[i] = new List<Graph>();
                }
    这样之后这个GraData数组就可以用了对吗?
      

  8.   

    没错.
    你这是循环把里面100项全部初始化了
    也可以等某一项用之前再初始化.不过很容易重新new了
    还是先初始化比较好
      

  9.   

    有没有相应删除它的方法呢?
    内层的List有Remove方法,外层的是数组,不能删除,不过你可以将其中的某一项设置为null,指向空引用,不过这个元素其实一直存在的,只是引用的对象被回收了而已