在實現C#窗體顯示文件下載進度以及解壓縮的過程中,查找別人實現方法,發現用了委託的方法。自己搜索資料理解做一個記錄
C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。
委托(Delegate)使用函數做作為參數用于实现事件和回调方法。
public class Test
{
public void GreetPeople(string name, GreetingDelegate MakeGreeting ,GreetingDelegate Sum)
{
int a,int b;
//代表English(string name)
MakeGreeting(name);
//代表sum(int a ,int b)
Sum(a,b);
}
//声明delegate对象
public delegate void GreetingDelegate(string Name);
public void English(string name)
{
Console.WriteLine("Morning, " + name);
}
public void Chinese(string name)
{
Console.WriteLine("早上好," + name);
}
public void sum(int a ,int b)
{
int c = a+b;
Console.WriteLine("a+b="+c)
}
public void GetSomthing()
{
string name="jamze zhang ";
//代理參數,函數作為參數
GreetPeople(name,English,sum);
}
//将多个方法赋给同一个委托
public static void main()
{
//創建delegatel對象
GreetingDelegate delegate1 = new GreetingDelegate(English);// 先给委托类型的变量赋值
delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
//調用多播
delegate1("jamze")
}
}
.Net Framework中的委托与事件
詳情:C#的事件與委託_jane007123的专栏-CSDN博客
匿名方法:[C#] C# 基础回顾 - 匿名方法 - 反骨仔 - 博客园
函數參數 object sender ,EventArgs e