gpt4 book ai didi

c# - 为什么事件通常使用 EventHandler,即使不需要传递参数?

转载 作者:IT王子 更新时间:2023-10-29 04:48:50 26 4
gpt4 key购买 nike

在创建事件时,C# 中的常见做法是将其定义如下,取自 from an example in the .NET Framework Guidelines :

public class CustomEventArgs : EventArgs
{
public CustomEventArgs(string s)
{
msg = s;
}
private string msg;
public string Message
{
get { return msg; }
}
}

...

public delegate void CustomEventHandler(object sender, CustomEventArgs a);

通常,我创建的事件根本不需要任何参数。我通常使用 Action 作为事件处理程序类型来简单地实现这一点。

public event Action LogonScreenExited;

我想知道人们是否有任何理由想要遵循“传统”模式。也许像这样的事件表明存在设计缺陷?然而,我使用 Action 的理由是 YAGNI ,为什么在不使用时实现某些东西(甚至显示其意图)?

最佳答案

这不是要求,只是设计指南。

您需要记住,您无法预测客户端代码将如何使用事件,也无法预测 future 。 sender 参数对客户端程序员很有用,它允许他使用单个事件处理程序方法来处理来自多个事件源的事件。从 EventArgs 派生是很有用的,因为它允许您重构事件,从原始基类派生并添加额外的参数,而不会破坏客户端代码。您可以随意忽略这种方法的好处。

关于c# - 为什么事件通常使用 EventHandler,即使不需要传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687507/

26 4 0