是否应该在提升活动的课堂内或在外面宣布代表?

ric*_*ard 14 .net c# events delegates

我已经看到了各种事件处理的例子.这是一个:事件样本.

有时我看到在类之外声明的委托将引发事件(如上面的链接),有时在内部(认为应该声明它).

它使我更有意义申报活动,将引发该事件的类.原因是该类将声明的事件实际上只是辅助方法等的一些糖涂层,它们实际上正在添加,减去和调用委托等.

有没有最佳做法?是否有时候你想要在外面声明委托,有时你想在里面声明委托?如果是这样,应该如何决定做什么?

Jon*_*eet 20

通常情况下,这些天您创建自己的类EventArgs,然后只使用EventHandler<TEventArgs>- 不需要创建单独的委托类型.所以不要AlarmEventHandler使用EventHandler<AlarmEventArgs>.的EventArgs派生类通常应当是顶层(即非嵌套).


Jak*_*cki 6

我会在外面宣布它们,因为它们也被其他类使用 - 事件的消费者.如果委托特定于此类,我会将委托保留在与该类相同的文件中.

如果您使用EventHandler<TEventAgrs>.NET 2.0及更高版本中提供的通用版本,则不会出现问题,因为您只需要声明自定义EventArgs.