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,而是通过一种间接的方法,从而实现这样的一个功能,我们称之为方法的回调.     

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

原文地址:https://www.cnblogs.com/chenli0513/p/1887361.html