【发布时间】:2012-12-31 07:14:06
【问题描述】:
我寻找这个信息已经很久了。从来没见过有人问这样的问题。 我知道我们可以在不安全代码中使用 C# 中的指针,但事实并非如此。 问题是:
MyClass beta = new MyClass();
MyClass alpha = beta;
beta = null;
我现在需要做的是将 beta 设置为 null 并将 alpha 设置为 null。 假设我在一个函数中返回了 alpha,所以我无法再访问它,那么,如何将它设置为 null? 在 c++ 中,如果 beta 和 alpha 是指针,我可以释放 beta 指向的内存,但我不知道在 c# 中这样做的方法。
以更基本的方式,假设我必须将两个变量都设置为 null,但我只能访问其中一个。
编辑
我确实看到了一些与我所做的问题无关的答案......我会再次尝试解释。
我正在创建一个做一些运动效果的类,并返回一个可用于暂停或停止此运动的实例。
使用这个类的程序员习惯在使用它之前用 if(variable != null) 测试变量。
我需要的是,当运动结束时,他们拥有的实例变为空,所以他们知道它不再有用了。
有什么办法吗?
【问题讨论】:
-
您不需要“释放”它,垃圾收集器会为您完成。
-
我对你的第一个问题是为什么?正如上面@DaveShaw 所说,垃圾收集器会为您完成。
-
重点是让其他变量无法访问底层对象,即使该变量没有超出范围。
-
什么??我猜你不习惯托管代码。一旦超出范围并且不再需要这些引用,它们将被垃圾回收
-
@HighCore 我猜你只是对非托管代码不够熟悉,无法理解他的类比的含义,并且错误地假设他误解了托管代码。
标签: c# pointers memory-management