请教关于System.Drawing.Point类型的坐标对该如何存储到一个集合中的问题
RT,比如我有(1,2)(1,3)(1,4)(2,1)(2,2)(2,3)这样6个坐标,怎么把这样的坐标对存储到一个集合中,以便我下次使用System.Drawing.Point()方法时直接调用
------解决方案--------------------写个字段把这个内容存起来
private Point[] points;
public Point[] Points
{set
{
points=;
}
get {
if(points!=null)
return points;//,如果有缓存,则取出缓存
points=getPoints(); //否则,调用取的点内容集合的方法,并把结果缓存起来
return points;
}
}
private Point[] getPoints()//取得当前
{...}
这里就会出现一个新问题,如果点集合内容变了,缓存并不会自动改变,所以你要判断,在点集合改变的地方自动变更缓存points的内容.
{...
if(changed)
{
Points=getPoints();
}
...
}
当然,这样写从oo角度来说是不好的,更好的方法是注册一个事件,当点集合发生改变时触发,而为这个事件注册一个方法,在方法里改变缓存的值