web框架C#委托和事件

web框架中大致来说,委托是一个类,该类内部维护着一个字段,指向一个方法。事件可以被看作一个委托类型的变量,通过事件注册、取消多个委托或方法。

首先说明

(1)web框架中事件:事件时属于类的成员,所以要放在类的内部。
(2)委托属于一个定义,是和类、接口类似的,通常放在外部。 (因为大多数委托都要被重用)
委托定义在类里面还是类外面视情况而定,一般定义在与类定义平级部分, 且用public修饰,便于外部调用。
若定义在类的内部,则必须通过调用该类的成员才能取得其委托的引用, 频繁调用的情况下不合适。
 

如何使用

委托定义在类内部,举例说明如下:
Class A {
      //声明在这里是可以的~
      private delegate void test_del(int a);
  
      private void test(){...}
      public void start(){
      //声明在这里就不行了~
      private delegate void test_del(int a);
  }
委托是一种特殊的类,和普通类不同的是委托是对一类方法的抽象。
因此只能在类内部定义内部类(包括委托、结构和枚举)而不能在方法中定义。
 
委托是事件的基础,事件又对委托进行了封装。
web框架大致来说,委托是一个类,该类内部维护着一个字段,指向一个方法。事件可以被看作一个委托类型的变量,通过事件注册、取消多个委托或方法。
在Winform和以前的WebForm中,事件被大量使用,是必须掌握的知识,一个完整的事件流程包括:
在类里面定义一个委托,声明事件用于发布。  
    public class Button
    {
        //定义事件,用于发布
        public event EventHandler OnClick;    //注意:EventHnadler是一个委托
        public void click()
        {
            if (OnClick != null)
            {
                OnClick(this, new EventArgs());
            }
        }
    }
实例化一个发布了OnClick事件的button。事件被btn_click订阅,即:当这个btn被click时调用btn_click()方法。
            //实例化一个发布了OnClick事件的button
            Button btn = new Button();
            //事件被btn_click订阅,即:当这个btn被click时调用btn_click()方法
            btn.OnClick += btn_click;
 写一个静态方法  
        private static void btn_click(object sender, EventArgs e)
        {
            Console.WriteLine("1111111");
        }
触发事件  
//事件被触发
            btn.click();
注意:
event和delegate都可以被多次订阅(+=)/退订(-=)
开发框架委托于事件

总结

○ 委托就是一个类,也可以实例化,通过委托的构造函数来把方法赋值给委托实例
○ 事件可以看作是一个委托类型的变量
○ 通过+=为事件注册多个委托实例或多个方法
○ 通过-=为事件注销多个委托实例或多个方法
○ EventHandler就是一个委托


标签: C#系列

网站&系统开发技术学习交流群:463167176

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:快速开发框架 » web框架C#委托和事件
本文标题:web框架C#委托和事件
本文地址:https://www.hocode.com/OrgTec/Back/0044.html

相关文章: web框架c#委托

电话
电话 18718672256

扫一扫
二维码