zoukankan      html  css  js  c++  java
  • c#之基础语法 event 如何触发回调事件

     本来c#这种语法会有容易让人歧义,读者问一想到,他有什么作用,我用别的方式完也是可以替代的了的

    延续前面的文章,

                //MyDelegate d = new MyDelegate(p.InstanceMethod);
                //d(); //以委托为中介,进行转换,进而可以以把函数 作为函数的参数传递,有点拗口。

             但是有另外一种方式来,实现同样的情况,暂时只能给出这样的一个类比,进而说明问题的本身。

           函数回调,不过在回调之前要绑定,绑定就要用到event ,代码如下

    代码
        public delegate void MyDelegate();   // delegate declaration
        public interface I
        {
            
    event MyDelegate MyEvent;
            
    void FireAway();
        }
        
    public class MyClass : I
        {
            
    public event MyDelegate MyEvent;
            
    public void FireAway()
            {
                
    if (MyEvent != null)
                    MyEvent();
            }
        }
        
    public class MainClass
        {
            
    static private void f()
            {
                Console.WriteLine(
    "This is called when the event fires.");
            }
            
    static public void Main()
            {
                I i 
    = new MyClass();
                i.MyEvent 
    += new MyDelegate(f); //进行事件绑定
                i.FireAway();                   //调用类的方法 -----> MyEvent(); -->回调 f
            }
        }

     我一直以为这个事件与委托没什么必要,其实这种的出现是在破坏面向对象,或许说的对,规则的建立,就是用于来破坏的

     i.MyEvent += new MyDelegate(f); //进行事件绑定,把f的函数地址赋给已经实例化的的i ,这样i在此时拥有了函数 f的地址.
                i.FireAway();      此时用于调用实例化对象i的方法

     

     

     在这个实例当中我看到在一个

    实例化的对象中的方法 a

    去调用

    另外一个对象b中的方法 的时候    a并没有去实例化对象b,而是通过一种间接的方法,从而实现这样的一个功能,我们称之为方法的回调.     

      有不同意见的朋友,完全可以跟我来讨论. 

  • 相关阅读:
    hdu 4825 Xor Sum(01字典树模版题)
    poj 2778 DNA Sequence(ac自动机+矩阵快速幂)
    codeforces 626 G. Raffles(线段树+思维+贪心)
    hdu 2615 Division(暴力)
    hdu 6092 Rikka with Subset(多重背包)
    codeforces 688 E. The Values You Can Make(01背包+思维)
    JavaUtil smtp 邮件发送
    JavaUtil 处理Base64的图片上传
    Centos7 在apache+php7环境下 安装 Discuz!X3.4
    Centos7 安装 apache + php7.0 环境
  • 原文地址:https://www.cnblogs.com/chenli0513/p/1887361.html
Copyright © 2011-2022 走看看