CS8622类型中参数'sender'的引用类型的可空性。

12

我在我的 net6.0-windows SDK 项目中打开了 TreatWarningsAsErrors,并尝试解决以下错误:

void myhander 的参数类型 'sender' 的引用类型的空值性与目标委托不匹配(可能是由于空值性属性)

代码如下:

pricingBinder = new BindingSource() { DataSource = _pricingbo };
if (pricingBinder_DataError != null)
{
    pricingBinder.DataError -= pricingBinder_DataError;
    pricingBinder.DataError += pricingBinder_DataError;
}

事件处理程序是什么。
private void pricingBinder_DataError(object sender, BindingManagerDataErrorEventArgs e)
{
    throw new MyGeneralException("## pricingBinder_DataError {0} | {1}");
}

错误信息

我猜想这与检查我的事件处理程序是否为空有关,但我不确定该如何做。


1
不是你的事件处理程序是否为空,而是你的方法签名。这就是我从错误消息中理解的。 - ProgrammingLlama
1
谁会将事件处理程序设为静态的?希望你有充分的理由。 - Bartosz Olchowik
糟糕,我已经更正了,但错误仍然存在。 - Kirsten
1个回答

27

这是因为BindingManagerDataErrorEventHandler在定义中需要可空的发送者。

您可以在此处阅读有关此的更多信息:BindingManagerDataErrorEventHandler

因此,您需要将代码更改为:

private void pricingBinder_DataError(object sender, BindingManagerDataErrorEventArgs e)
{
    throw new MyGeneralException("## pricingBinder_DataError {0} | {1}");
}

private void pricingBinder_DataError(object? sender, BindingManagerDataErrorEventArgs e)
    {
        throw new MyGeneralException("## pricingBinder_DataError {0} | {1}");
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接