现定义一个ArrayList数组
ArrayList graphicsList = new ArrayList();
object drawObject;
for ( int i = 0; i < n; i++)

   drawObject = Assembly.GetExecutingAssembly().CreateInstance(typeName);   ((DrawObject)drawObject).LoadFromStream(info, i);
        
   graphicsList.Add(drawObject);
           
}如果进行深拷贝;将 graphicsList 复制到 另一个 ArrayList getArrayList 数组?
复制后的getArrayList 与 graphicsList 互不影响
网上有很多的方法,但小弟愚笨;请大家帮个忙,把问题讲得详细一些;先谢了之前用下面的方法复制
ArrayList getArrayList = new ArrayList();
getArrayList.AddRange(graphicsList);再次调用 getArrayList 
if (getArrayList.Count == 0)
{
  …
}抛出异常  “未将对象引用设置到对象的实例。” 这个是什么原因呢?希望能一起解决小弟的疑惑

解决方案 »

  1.   

    抛出异常 “未将对象引用设置到对象的实例。”你逐步调一下,应该是哪个不应该为null的对象为null了
      

  2.   

    graphicsList这个里面是不是为空
      

  3.   

              ArrayList list = new ArrayList();
                for (int i = 0; i < 10; i++)
                {
                    list.Add(i);
                }
                ArrayList copylist = new ArrayList();
                copylist.AddRange(list);
                if (copylist.Count > 0)
                {
                    string b = "success";
                }
    你执行下 有值啊,那就是你上面那个graphicsList没有读取到响应的值
      

  4.   

    MemoryStream ms = new MemoryStream();
      BinaryFormatter bf = new BinaryFormatter();
      bf.Serialize(ms,arrlist);    
      ms.Seek(0, SeekOrigin.Begin);
      ArrayList list2 = (ArrayList)bf.Deserialize(ms);
      

  5.   

    graphicsList里面不是为空的;我这里只是剪切出一小段程序代码而已
    因为要传出graphicsList中的对象;所以想对graphicsList进行深拷贝
    再将数组内容传出if (getArrayList.Count == 0)
    {}
    只是用来测试下,有没有复制成功
      

  6.   

    我是想把 graphicsList 复制一份 传出来
    graphicsList在 类中 GraphicsList.cs中定义
    因此我设定了一个函数复制并传值
    public ArrayList GetArrayList
    {
         get
         {
               if (graphicsList.Count > 0)
               {
                     getArrayList.AddRange(graphicsList);                  
               }
               return getArrayList;               
         }
     }
    但在form1.cs中
    运行
    GraphicsList graphicsList=new GraphicsList();
    if (graphicsList.GetArrayList.Count == 0)
    {
    ……
    }
    就跳出异常了后面逐步调试
    在 getArrayList.AddRange(graphicsList);设置断点
    发现这句并没有在 
    if (graphicsList.GetArrayList.Count == 0)
    {
    ……
    }之前调试,程序就直接错误终止了;
    这个要怎么解决?
    不知道我这样描述;大家能理解吗?
      

  7.   


    你写的这个是没错!是我自己断点没设置好
    我现在知道是什么原因了;谢谢大家了前天要结贴的时候;突然断网了,这几天又比较忙,所以才到现在…我总结一下五楼
    MemoryStream ms = new MemoryStream();
      BinaryFormatter bf = new BinaryFormatter();
      bf.Serialize(ms,arrlist);   
      ms.Seek(0, SeekOrigin.Begin);
      ArrayList list2 = (ArrayList)bf.Deserialize(ms);
    直接采用流来读取缓冲区;来存入也是一个好方法
    而且不局限于格式后面通过自己学习;用ArrayList存储数据;有局限性,而且数据不容易控制
    现在我都改用xml来存储对象的数据总之谢谢大家的帮忙;让我又学到新的思路