为了账号安全,请及时绑定邮箱和手机立即绑定

急急急! c# 对象生命周期问题

急急急! c# 对象生命周期问题

千巷猫影 2018-12-10 13:09:57
void Method(){          MyClass x = new  MyClass();}MyClass是我自己定义的类,我在此实例化了一个对象,指针存x,实际的对象在堆内,当我在其他地方想再访问这个对象时怎么访问   因为   出了Method函数  那么指针x应该就被释放了,还有那么实际的对象  是什么时候会被回收。如何接着访问那个对象,多谢谢急急急!
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

问题的关键是方法是在线程栈中执行的,而你的对象指针并没有通过线程栈传递到另一个方法中,你创建的对象即使CLR还没有进行回收,也就是说还在内存中,但是你的代码并不知道对象的地址是什么,对吗?

所以要解决有两个办法:一参数传递给另一个方法,二 用一个静态的字段持有住你对象的引用..比如一个类中定义一个静态的集合字段,你的对象添加进去.因为静态字段属于类型,而类型的地址在CLR看来是加载了类型后,就不会改变的,除非AppDomain被卸载


查看完整回答
反对 回复 2018-12-14
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

出了作用域是访问不了的,不管还有没有被回收

是要重用吗?可以用单例模式创建


查看完整回答
反对 回复 2018-12-14
  • 2 回答
  • 0 关注
  • 633 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信