1
20
如果需要取消订阅事件,则需要实例引用。不幸的是,这意味着您不能使用那个特定的语法。 |
2
35
首先…是的,这是一个很好的方法,它干净,小的形式,易于阅读和理解…当然,警告是“除非你以后想退订”。 我相信 Jon Skeet 在那之前指出 “当涉及到使用匿名方法创建的委托的等效性时,规范明确地不保证任何一种方式的行为。” 因此,如果您以后需要取消订阅事件,最好实际创建一个委托实例,这样您就可以挂起引用以备以后使用。
|
3
1
这是一个不错的方法,除非MyObserveableCollection的寿命将长于“this”,在这种情况下,您可能会导致内存泄漏,因为在后台创建的委托将保留对“this”的引用,这将使其保持活动状态。如果您重复创建和“销毁”正在侦听事件的内容,您将发现垃圾收集器没有收集这些内容。 如果这是一个问题,您可以按照答案中建议的路线走,保存对处理程序的引用,必须首先创建该引用。 另一种解决方案是使用弱引用创建事件处理程序,该处理程序允许在没有其他引用的情况下收集订阅服务器。我已经在 this question and answer . |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |