用IList<T>接口定义了个点的集合类,在使用的时候虽然集合内点值改变了,但是在外面的属性却捕捉不到,请教下有没有办法解决
代码如下PointList pointlist = new PointList();
public PointList Pointlist
{
get { return pointlist; }
set
{
pointlist = value;
Function();//无法执行到这里
}
}
代码如下PointList pointlist = new PointList();
public PointList Pointlist
{
get { return pointlist; }
set
{
pointlist = value;
Function();//无法执行到这里
}
}
这里说的改变只是改变了Pointlist属性中的属性吧,没有改变Pointlist整个属性的引用吧?
{
PointList pointlist = new PointList();
public PointList Pointlist
{
get { return pointlist; }
set
{
pointlist = value;
Fun();
}
}
}
Class B
{
A a = new A();
//注意以下操作都不会触发Pointlist的set方法
a.Pointlist.Add(something);
a.Pointlist[i]=something;
}求解
a.Pointlist[i]=something;都未改变引用本身,因此是不会执行那个set方法的
实际上你的这个 pointlist 是一个引用 set
{
pointlist = value;
Fun();
}
这个是当这个引用发生变化的时候才会执行a.Pointlist.Add(something);
实际上你并没有改变那个引用,因此不会执行你的set
等价于:PointList p1=a.Pointlist;
p1.Add(something); a.Pointlist[i]=something;//调用get
等价于:PointList p2=a.Pointlist;
p2[i]=something;