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

void Method()

{

          MyClass x = new  MyClass();

}

MyClass是我自己定义的类,我在此实例化了一个对象,指针存x,实际的对象在堆内,当我在其他地方想再访问这个对象时怎么访问   因为   出了Method函数  那么指针x应该就被释放了,还有那么实际的对象  是什么时候会被回收。如何接着访问那个对象,多谢谢

急急急!

小怪兽爱吃肉
浏览 411回答 10
10回答

qq_笑_17

问题的关键是方法是在线程栈中执行的,而你的对象指针并没有通过线程栈传递到另一个方法中,你创建的对象即使CLR还没有进行回收,也就是说还在内存中,但是你的代码并不知道对象的地址是什么,对吗? 所以要解决有两个办法:一参数传递给另一个方法,二 用一个静态的字段持有住你对象的引用..比如一个类中定义一个静态的集合字段,你的对象添加进去.因为静态字段属于类型,而类型的地址在CLR看来是加载了类型后,就不会改变的,除非AppDomain被卸载.

萧十郎

出了作用域是访问不了的,不管还有没有被回收 是要重用吗?可以用单例模式创建

森林海

@K4: 如果要在多处使用可以考虑用全局变量或传递参数

达令说

哦,多谢您。可是我  生成的对象是当我点击按钮是动态生成的,不能提前定义啊。而且是每点击一次都生成一个对象的。 怎么办?

皈依舞

@K4: 不太清楚你的真实需求是什么,如果确定要产生多个对象可以在创建对象后放在一个泛型列表中。
打开App,查看更多内容
随时随地看视频慕课网APP