C#委托深刻理解
2021-05-30 04:20
标签:string ESS The 执行 private mes 异步 and art C#委托当方法传递:其实就是一个方法传送到另一个方法中,执行的时候2个方法都会执行,传递之后必须要指明被传递方法的参数。 C#委托深刻理解 标签:string ESS The 执行 private mes 异步 and art 原文地址:https://www.cnblogs.com/haoweiwei/p/11066102.htmlusing 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个
}
}
}