调用方法后的调用事件

奥列西(Olexiy Pyvovarov)

我实际上遇到了一个奇怪的问题。我尝试基于Hashset类创建一个新的Set类。

public delegate void ChangedEventHandler();
class Set<T> : HashSet<T>
{

    event ChangedEventHandler Added; 

    public bool Add(T item) 
    {
        bool answer = base.Add(item);
        Added?(); //or Added?.Invoke()
        return answer;
    }

}

我希望在调用Add方法后执行一些功能。好的上面的代码说Add已经在基类中实现了,但是它不是虚拟的。我无法覆盖它。

其实我想得到这样的结果:

Set<int> numbers = new Set<int>();
numbers.Added += SumNumbers;
numbers.Added += PrintNumbers;
numbers.Add(2) //Outputs 2
numbers.Add(4) //Outputs 6


//somewhere in this class
public int SumNumbers() {...}
public void PrintNumbers() {...}

坦白地说,我不需要函数具有不同的语法结构,但是还有另一个问题,如果函数是语法,该怎么办。

尤拉

只需为方法定义添加“ new”关键字,因为编译器会警告您,您正在隐藏基本实现:

public new bool Add(T item) 
{
    bool answer = base.Add(item);

    if(Added != null)
    {
        Added();
    }

    return answer;
}

将处理程序附加到事件的正确语法也没有“()”(您正在传递方法,而不是调用):

numbers.Added += SumNumbers;
numbers.Added += PrintNumbers;

//somewhere in this class
public int SumNumbers() {...}
public void PrintNumbers() {...}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用方法后的调用事件

来自分类Dev

取消订阅后调用事件

来自分类Dev

检查哪个对象调用事件方法

来自分类Dev

在UI上调用事件方法

来自分类Dev

检查哪个对象调用事件方法

来自分类Dev

如何调用事件?

来自分类Dev

调用事件后等待事件侦听器完成

来自分类Dev

调用.one()函数后,如何启用事件处理程序?

来自分类Dev

环回:重置后未调用事件 resetPasswordRequest

来自分类Dev

C#调用事件

来自分类Dev

从主函数调用事件

来自分类Dev

通过showInputDialog调用事件

来自分类Dev

如何从其他方法调用事件方法?

来自分类Dev

在Google脚本中调用事件的正确方法是什么?

来自分类Dev

如何在jQuery中检测触发方法调用事件

来自分类Dev

如何使用事件总线从不同的文件调用方法

来自分类Dev

如何在 ngOnInit 中调用事件方法

来自分类Dev

调用事件,h(args)与EventName?.Invoke()

来自分类Dev

在Bootstrap面板上调用事件展开

来自分类Dev

用JavaScript创建和调用事件

来自分类Dev

一次通用事件调用?

来自分类Dev

直接调用事件处理程序

来自分类Dev

哪个UserControl调用事件MouseEnter?

来自分类Dev

如何获取调用事件的BrowserWindow实例?

来自分类Dev

在函数C#中调用事件

来自分类Dev

jQuery滑块避免过快调用事件

来自分类Dev

未调用事件侦听器

来自分类Dev

调用事件,h(args)与EventName?.Invoke()

来自分类Dev

直接调用事件处理程序