小编jul*_*n29的帖子

两个部署实现之间的区别?

这两个实现之间有区别吗?

1:

public class SMSManager : ManagerBase
{
    private EventHandler<SheetButtonClickEventArgs> _buttonClickevent; 

    public SMSManager(DataBlock smsDataBlock, DataBlock telephonesDataBlock) :
        base(smsDataBlock)
    {
        _buttonClickevent = new EventHandler<SheetButtonClickEventArgs>(OnButtonClick);
        SheetEvents.ButtonClick += _buttonClickevent;

    }

    public override void Dispose()
    {
        base.Dispose();
        if (_buttonClickevent != null)
        SheetEvents.ButtonClick -= _buttonClickevent;
    }
}
Run Code Online (Sandbox Code Playgroud)

2:

public class SMSManager : ManagerBase
{
    public SMSManager(DataBlock smsDataBlock, DataBlock telephonesDataBlock) :
        base(smsDataBlock)
    {
        SheetEvents.ButtonClick += new EventHandler<SheetButtonClickEventArgs>(OnButtonClick);   
    }

    public override void Dispose()
    {
        base.Dispose();
        SheetEvents.ButtonClick -= new EventHandler<SheetButtonClickEventArgs>(OnButtonClick);
    }
}
Run Code Online (Sandbox Code Playgroud)

关于内存泄漏,第一个似乎比第二个更正确.但它真的是对的吗?

c# delegates dispose memory-leaks event-handling

5
推荐指数
1
解决办法
166
查看次数

标签 统计

c# ×1

delegates ×1

dispose ×1

event-handling ×1

memory-leaks ×1