![]() |
1
6
不一定。将其设置为空,删除对它的任何引用,并依赖垃圾收集器来处理它。 如果计时器在GC到达它之前关闭,它将触发事件。 |
![]() |
2
11
为什么会这样? 考虑:
设置为空是对变量执行的操作,而不是对对象执行的操作。计时器无法知道您将特定变量设置为空,因此无法在此基础上执行操作。 编辑: 要解决编辑问题,即使只有一个引用,也不能保证计时器将停止,因为可能在引用设置为空后GC可能不会运行。这也并非完全不可能,Microsoft.NET实现使用代收集器,静态字段很可能在托儿所集合中存活下来,并提升到较老的一代。如果您的程序有一个相对稳定的内存配置文件,那么可能永远不会有旧一代的集合(并且通过扩展,终结器将在程序结束之前不运行)。 |
![]() |
3
7
我知道你在问
目前提供的答案是好的。
Logan
和
SLaks
将任何变量设置为
slaks表示在设置计时器引用之后
但是
,例如,如果您有
因此,请考虑以下代码:
在上面的示例中,由于代码保存在对
再一次,我意识到这不是你所要求的类;我提出这一点只是为了指出,事实上,你对一个给定对象是否有更多的引用并不总是显而易见的。
更新
:关于我在上面所说的关于
这就是它不起作用的原因
当我们像这样定义了事件处理程序时,很容易忽略答案:
如果我像这样定义我的处理程序呢?
哦,对了!那
.NET提供的事件处理基础结构要求
处理
事件维护对对象的引用
饲养
事件。否则,本合同提供的签字人
这个故事的寓意是:只要向事件添加处理程序,就创建了对对象的新引用。在这一点之后,允许该对象被垃圾收集的唯一方法是移除处理程序——但是如果将对所述对象的唯一其他引用设置为
|
![]() |
4
2
不,它不会停止。
将变量设置为
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |