正确使用Action和Events

saa*_*aam 9 c# events

我有点新,c#所以如果你觉得它很琐碎,请忽略.我看到了以下"奇怪"的代码.

任何人都可以对此有所了解.

public event Action _action;

if (_action != null)            
{
    foreach (Action c in _action.GetInvocationList())
    {
         _action -= c;
    }
}
Run Code Online (Sandbox Code Playgroud)

特别是_action -= c;部分.

Eri*_*ert 23

委托可以是多个功能的委托.如果你有一个委托alpha委托给Alpha()和委托beta委托给Beta()然后gamma = alpha + beta;是调用一个委托Alpha(),然后Beta(). gamma - beta生成一个调用的委托Alpha().这是一个奇怪的功能,坦率地说.

您发布的代码很奇怪.它说:"经过在行动功能列表中,产生代表一个整体一堆调用越来越少的功能,最后指定一个代表,什么也不做,以action为什么在地球上会有人这样做?只是分配nullaction和完成用它.


PHe*_*erg 6

public event Action _action; //an event


if (_action != null) // are there any subscribers?

{
        foreach (Action c in _action.GetInvocationList()) //get each subscriber
        {
            _action -= c; //remove its subscription to the event
        }
}
Run Code Online (Sandbox Code Playgroud)