gpt4 book ai didi

c# - EventArgs.Empty 说明?

转载 作者:行者123 更新时间:2023-11-30 15:34:19 24 4
gpt4 key购买 nike

我有一个方法

protected void Item_Click(object sender, EventArgs e)
{ }

我希望其他代码调用此方法。 (实际上并不需要 sendere)

类似的东西:

Item_Click(null, null)

但后来我想起我可以改用 EventArgs.Empty

鼠标悬停在上面显示:

enter image description here

等等……什么?

EventArgs.Empty 代表一个事件 ?它不是。它应该代表空参数而不是事件。

就像string.empty 表示空的string

  • 我是不是漏掉了什么?

最佳答案

这只是糟糕的文档,将两个概念混为一谈。 latest documentation似乎一点更好:

Provides a value to use with events that do not have event data.

问题在于“一个事件”有两个不同的含义:

  • 您可以订阅的事件
  • 引发该事件的单个“实例”

例如,可以这样说:“订阅 KeyPress 事件以接收与键盘相关的事件。”

(“委托(delegate)”一词同样糟糕,用于描述委托(delegate)类型及其实例。)

这一切都很不幸,但请放心,您的想法是正确的。

顺便说一句,如果您想在引发事件时调用 其他 方法,我可能会将其分为两种方法:

// This only exists to handle the event, delegating to the DoSomething method
private void HandleItemClicked(object sender, EventArgs e)
{
DoSomething();
}

// This can be called from other code, and should be named according to what it
// does.
private void DoSomething()
{
}

如果您手动订阅事件,您甚至不需要额外的方法:

item.Click += delegate { DoSomething(); };

这样您就可以清楚地表明您的“真实”方法不关心发送者或事件参数,并且您在调用它时不需要提供“虚拟”值。

关于c# - EventArgs.Empty 说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com