自定义结构中使用集合的问题
public struct Actions
{
public int[] X;
public int[] Y; //位置
public int[] FX;//方向 0横向1纵向
public int[] Num;//数量
public int[] XZH;//形状 0方头1尖头
public int[] CHang;//长度,宽或者高
public int[] JianGe;//如果数量不为0,就有间隔.
public ArrayList JuXing;//矩形集合
public Rectangle JD;//焦点矩形
public Rectangle YYDFW;//移动范围
public int YYDFX;//移动方向
public Rectangle OOldJiaoDian;//上一次的焦点
}
ArrayList ActBack = new ArrayList();//所有动作的集合 //撤消的集合
最近在搞一个GDI+绘图里的撤消,后退的操作,基本想法是把每一步的操作,保存为一个自定义的结构(用集合中的数组来区分每一步),然后每一步里重要的东西,都存在一个集合里面,这样,撤消,后退的时候,就可以根据每个结构中,不一样的集合,来操作!
可是结果发现,public ArrayList JuXing 这个集合,是同步的!
我的本意,是这个矩形,每一步每一步,都不一样的,比如,点一下,第一次只有两个矩形,再点一下,第二次就有3个矩形,结果发现,实际运行起来之后,结构中的集合,只要一赋值,所有的ActBack里面的Actions.JuXing,全部都变成相同的了.
感觉在C#里面,好象结构用New的时候,New不出新的东西,都是相同的一个东西!
这种问题,我该怎么办呢?难道换成自定义的类吗??请给点思路!谢谢!
------解决方案--------------------结构是值类型的,可以考虑用类来实现。
------解决方案-------------------- public ArrayList JuXing = new ArrayList();
每个结构体必须维护单独的列表,而不是指向同一个。