c# 委托+匿名方法+Event(事件)

本文详细介绍了C#中委托的定义与使用,包括如何声明委托、创建委托对象及调用方法。同时,讲解了匿名方法和Lambda表达式的应用,并展示了自定义泛型委托的三种实现方式。此外,还探讨了委托在多窗体间传值的场景,以及事件(Event)的声明、触发和响应。内容涵盖了C#编程中的核心概念和技术,对于理解C#的事件处理和回调机制具有指导意义。
摘要由CSDN通过智能技术生成

目录

一、委托的定义

1.1、首先声明委托(定义一个方法的原型:返回值+参数类型+参数个数)

1.2、根据委托定义一个具体的方法

1.3.创建委托对象,关联委托方法

1.4.通过委托调用方法

二、匿名方法和lamada表达式调用委托方法

三、自定义泛型委托

3.1种方式实现委托

四、委托进行多窗体间传值

4.1.在主窗体声明委托

4.2.消息接收者定义委托函数

4.3.消息发送者定义委托变量

4.4主窗体进行关联

五、事件(EVent)

1、主窗体声明委托public delegate void ShowEventMessage(string message);

2、事件发送者声明事件 public event ShowEventMessage message;

3、事件发送者激发事件

4、事件接受者响应事件

5、 主界面关联事件



一、委托的定义

1.1、首先声明委托(定义一个方法的原型:返回值+参数类型+参数个数)

注解:声明委托的关键字是delegate

public delegate int CalculatorDelegate(int a,int b)

1.2、根据委托定义一个具体的方法

定义返回值,参数类型,参数个数必须跟声明委托的返回值 参数类型和参数个数一致

int add(int a,int b){

return a+b;

}

1.3.创建委托对象,关联委托方法

CalculatorDelegate objCal=new CalculatorDelegate(add);

1.4.通过委托调用方法

objcal(10,30)                                                                                                                                        

二、匿名方法和lamada表达式调用委托方法
 

 public delegate int Sum(int a, int b);
        private void button1_Click(object sender, EventArgs e)
        {
            Sum sum = delegate (int a, int b)
          {
              return a + b;
       
          };
        int ac=    sum(10, 230);
            MessageBox.Show(ac.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Sum sum = (int a, int b) =>
              {
                  return a + b;
              };
          int ad=  sum(10, 20);
            MessageBox.Show(ad.ToString());
        }

三、自定义泛型委托

 //声明一个泛型委托事件
        public delegate T Sum<T>(T a, T b);

3.1种方式实现委托

3.1.1 一般方式

步骤:1、定义委托方法,2、定义委托变量,3、变量关联方法,4.激发委托

定义委托方法:

 //【1】创建委托方法
        public static int sum( int a,int b)
        {
            return a + b;
        }
        public static double sum(double a, double b)
        {
            return a - b;
        }

2、定义委托变量并关联委托方法

 //【2】创建委托变量并关联,s 和s1是变量
        Sum<int> s = sum;//关联方法
        Sum<double> s1 = sum;

3、调用委托

 private void button3_Click(object sender, EventArgs e)
        {
            MessageBox.Show(s(10, 20).ToString());  
            MessageBox.Show(s1(10, 20).ToString());  
         ;


        }

3.1.2调用委托方式,匿名方法

//匿名方法调用泛型委托
        private void button1_Click(object sender, EventArgs e)
        {
            Sum<int> sum = delegate (int a, int b)
          {
              return a + b;
       
          };
          int ac=    sum(10, 230);
            MessageBox.Show(ac.ToString());
        }

3.1.3调用方式lamada表达式

    //lamada表达式调用泛型委托
        private void button2_Click(object sender, EventArgs e)
        {
            Sum<double> sum =  (double a, double b)=>
               {
                   return a -b;
               };
            double ad=  sum(10.0, 20.0);
            MessageBox.Show(ad.ToString());
        }

四、委托进行多窗体间传值

4.1.在主窗体声明委托

4.2.消息接收者定义委托函数

4.3.消息发送者定义委托变量

4.4主窗体进行关联

五、事件(EVent)

1、主窗体声明委托public delegate void ShowEventMessage(string message);

2、事件发送者声明事件 public event ShowEventMessage message;

3、事件发送者激发事件

4、事件接受者响应事件

5、 主界面关联事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值