一,委托
1.委托是寻址方法的.NET版本,是类型安全的类,定义了返回的类型和参数的类型,包含对一个或多个方法的引用。
委托是一种特殊类型的对象,是因为委托包含一个或多方法的地址。
2.声明委托
(1)没有参数和返回值的委托
delegate void PrintFunction(); //定义一个没有返回值和参数的委托类型
完整Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DelegateDemo
{
//定义一个没有返回值和参数的委托类型
delegate void PrintFunction();
public class Test
{
//一个实例的方法
public void Print1()
{
Console.WriteLine("Print1---Instance");
}
//一个静态的方法
public static void Print2()
{
Console.WriteLine("print2----Static");
}
}
class Program
{
static void Main(string[] args)
{
Test tt = new Test(); //创建一个测试类的实例
PrintFunction pf; //创建一个空的委托
pf = tt.Print1; //实例化并初始化该委托
//添加3个方法到委托上
pf += Test.Print2;
pf += tt.Print1;
pf += Test.Print2;
//委托包含4个方法
if (null != pf) //确认委托有方法
pf(); //调用委托
else
Console.WriteLine("Delegate is empty! ");
Console.ReadLine();
}
}
}
输出结果如下:
//****************************
Print1---Instance
print2----Static
Print1---Instance
print2----Static
//****************************
委托调用实例方法和静态方法可以使用 “+” 来添加方法。