|
|
1
3
每次激发一个新的不可变对象时,我都会创建它,因为事件参数中有值。 主要原因是如果在处理现有事件时再次激发新事件会发生什么? 这可能发生在多线程应用程序中,但也可能发生在单个线程上,如下面的示例所示: 第一个事件使用以下值激发:
然后,第一个事件处理程序以某种方式执行某些操作,从而使用以下参数再次激发事件:
所有的事件处理程序都是为第二个事件处理的,现在我们又开始为第一个事件处理其余的事件处理程序。 现在,由于使用了相同的对象,因此第一个事件的所有事件处理程序现在都将“fire 2”作为它们的someproperty1,因为第二个事件重写了这些值。 正如@nobugz所提到的,不要害怕制造短暂的垃圾。 |
|
|
2
5
首先,如果您只是忽略了一个eventargs参数,为什么还要将它作为激发方法呢?这是真正的浪费,但是资源消耗比您的方法告诉调用方的谎言问题要小。只需通过传递参数,您的激发方法可能不具有创建EventArgs对象所需的相关信息:
所以,既然我们已经知道了,如果您的eventargs对象没有有意义的信息来告诉您的订户,那么只需使用eventargs.empty,这就是它的用途。对于定制的Eventargs类,您可以遵循相同的模式,但老实说,您不必担心任何问题。在应用程序中,创建EventArgs对象永远不会成为瓶颈,如果是,则会出现设计问题。 |
|
|
3
1
我对你的
当客户机添加事件处理程序时,他们希望能够在处理事件时删除事件处理程序,如下所示:
如果您不遵循标准的调度实践,那么这段代码会给使用您的代码的人带来很大的惊喜。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |