日期:2014-05-18  浏览次数:20916 次

请教关于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角度来说是不好的,更好的方法是注册一个事件,当点集合发生改变时触发,而为这个事件注册一个方法,在方法里改变缓存的值