gpt4 book ai didi

c# - EventArgs 可以为空吗?

转载 作者:行者123 更新时间:2023-12-03 23:01:44 25 4
gpt4 key购买 nike

我的一些代码中有 protected override void OnFormClosing(FormClosingEventArgs e),代码分析给出了 CA1062,因为我不检查 e 是否为 null。

约定是 EventArgs 永远不应该为 null;这就是为什么我们有 EventArgs.Empty。当然,我可能是愚蠢的,在引发某些事件时传递 null 而不是 EventArgs.Empty,但这里将是一些自动生成的代码,将引发 FormClosing 事件所以我只是抑制了警告。

是否有一些极端情况可能导致 EventArgs 由框架而非程序员导致为 null?

最佳答案

简短的回答:是的,你可以这样做:

public void DoSomething()
{
OnFormClosing(null);
}

但是除非你真的做了这样的事情,否则你可以忽略这个警告。

查看 Form 类的源代码,我们可以找到 this method , 恢复为:

    /// <devdoc>
/// <para>Raises the FormClosing event for this form when Application.Exit is called.
/// Returns e.Cancel returned by the event handler.</para>
/// </devdoc>
internal bool RaiseFormClosingOnAppExit() {
FormClosingEventArgs e = new FormClosingEventArgs(CloseReason.ApplicationExitCall, false);
OnFormClosing(e);
return e.Cancel;
}

所以不,当 WinForms 引发事件时,e 不可能为 null。

关于c# - EventArgs 可以为空吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122690/

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