gpt4 book ai didi

c# - 订阅可空类的事件

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:48 25 4
gpt4 key购买 nike

我正在订阅一个可能为 null 的类生成的事件,如下所示:

if (eventGeneratingClass != null)
eventGeneratingClass.myEvent += myHandler;

在生成类的事件中,构造如下

myEvent?.Invoke(this, new EventArgs());

可以使用。我想知道在(取消)订阅事件时是否可以使用类似的构造,例如:

eventGeneratingClass?.myEvent += myHandler;
eventGeneratingClass?.myEvent -= myHandler;

我都找到了 Is there a shorthand for addition assignment operator for nullables that sets the value if null?How to call custom operator with Reflection

这导致我:Operator Overloading Usage Guidelines

这让我开始尝试

eventGeneratingClass?.myEvent.op_AdditionAssignment(myHandler);
eventGeneratingClass?.myEvent.op_SubtractionAssignment(myHandler);

但事件似乎没有op_AdditionAssignment 成员函数,或者至少没有向我提供错误

the event 'EventGeneratingClass.myEvent' can only appear on the left hand side of += or -=...

这是我卡住的地方......

最佳答案

空条件运算 ?. 当左侧表达式为空时返回空值。

所以在

eventGeneratingClass?.myEvent += myHandler

如果 eventGeneratingClass 为空,则 eventGeneratingClass?.myEvent 为空。尝试将事件监听器附加到 null 将导致 NullReferenceException

虽然 ?. 运算符确实使处理空值变得更容易,但它并没有消除对它们的处理。

关于c# - 订阅可空类的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49688764/

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