C#委托深刻理解

Posted haoweiwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#委托深刻理解相关的知识,希望对你有一定的参考价值。

using System;

using System.Windows.Forms;

namespace 事件委托练习

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        
        //声明委托
        public delegate void Del(string message);
        // 创建方法与委托有相同的参数
        
        public void Method1(string ee)  textBox2.Text = ee; //方法2
        public void Method2(string message)  textBox3.Text = message; //方法3
        
        public void MethodWithCallback(int param1, int param2, Del callback)//委托当参数传递
        
            callback("The number is: " + (param1 + param2).ToString());//给委托的参数指定值,必须
        
        private void button1_Click(object sender, EventArgs e)
        
            //将方法赋值给委托,这样委托就是一个方法了//此处无需实例化因为在一个类中
            Del d1 = new Del(Method1);//C#1.0赋值给委托
            Del d2 = Method2;//C#2.0赋值给委托
            Del d3 = delegate (string name)  textBox4.Text = name; ;//匿名委托/C#2.0以后直接赋值方法
            Del d4 = name =>  textBox1.Text = name; ;//  C# 3.0以后 lambda表达式直接赋值方法
            Del allMethodsDelegate = d1 + d2 + d3+d4;//委托的多播

            // 执行方法
            // handler("Hello World");//直接执行被赋值的委托
            //allMethodsDelegate("123");//基于上一句一下子执行了3个
             MethodWithCallback(1, 2, d1);//执行委托被赋值的方法及本身的方法,及执行这个方法的时候,异步回调
           // MethodWithCallback(1, 2, allMethodsDelegate);//基于上一句一下子执行了3个
           
        
    

C#委托当方法传递:其实就是一个方法传送到另一个方法中,执行的时候2个方法都会执行,传递之后必须要指明被传递方法的参数。

以上是关于C#委托深刻理解的主要内容,如果未能解决你的问题,请参考以下文章

C#对委托的初步理解理解

C#委托,简单粗暴理解

快速理解C#中的委托与事件

学习和理解C#的委托

深入理解委托——为什么C#要引入委托

快速理解C#高级概念 Delegate委托