c# 使一个类的对象被赋值为空时触发一个事件
比如有一个类:classa{publicintage{set;get;}publicstringname{set;get}publicvoidsetnull(){thro...
比如有一个类:
class a
{
public int age{set;get;}
public string name{set;get}
public void setnull()
{
throw new exception("error");
}
}
然后我实例化一个对象出来 a a1=new a();
然后当我a=null;的时候就希望触发setnull()事件,要怎么实现?
上面写错了,是a1=null;的时候 展开
class a
{
public int age{set;get;}
public string name{set;get}
public void setnull()
{
throw new exception("error");
}
}
然后我实例化一个对象出来 a a1=new a();
然后当我a=null;的时候就希望触发setnull()事件,要怎么实现?
上面写错了,是a1=null;的时候 展开
3个回答
展开全部
要实现这个你得把a设为某个类b的属性,在b的a属性被赋值时判断新值是不是为空。
单单只有a不能实现。因为a本身要得知自己被释放,得等到GC对它进行操作,但那时候a已经被标注为垃圾,不再拥有执行权限。就象等着进火葬场的尸体,是不会说话啥的。
单单只有a不能实现。因为a本身要得知自己被释放,得等到GC对它进行操作,但那时候a已经被标注为垃圾,不再拥有执行权限。就象等着进火葬场的尸体,是不会说话啥的。
追问
嗯,想明白了,a1=null;只是把a1的指向设为空而已,其实并没对实体对象做什么改变,、
这么想的话要在类内部将对象设为null也是不行的,我本来想实现了IDisposable接口,在dispose里设置null呢。。。。
展开全部
这个实现不了,语法是有规则的 ,不是你想怎么样就怎么样的。如果你想实现让a1为null,又报错,道是可以,直接写个方法就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样,空对象调用属性或者方法的时候会报错,未将对象引用到实例!你可以通过抓到异常来判断!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询