现定义一个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)
{
…
}抛出异常 “未将对象引用设置到对象的实例。” 这个是什么原因呢?希望能一起解决小弟的疑惑
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)
{
…
}抛出异常 “未将对象引用设置到对象的实例。” 这个是什么原因呢?希望能一起解决小弟的疑惑
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没有读取到响应的值
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms,arrlist);
ms.Seek(0, SeekOrigin.Begin);
ArrayList list2 = (ArrayList)bf.Deserialize(ms);
因为要传出graphicsList中的对象;所以想对graphicsList进行深拷贝
再将数组内容传出if (getArrayList.Count == 0)
{}
只是用来测试下,有没有复制成功
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)
{
……
}之前调试,程序就直接错误终止了;
这个要怎么解决?
不知道我这样描述;大家能理解吗?
你写的这个是没错!是我自己断点没设置好
我现在知道是什么原因了;谢谢大家了前天要结贴的时候;突然断网了,这几天又比较忙,所以才到现在…我总结一下五楼
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来存储对象的数据总之谢谢大家的帮忙;让我又学到新的思路