C# 委托详解
委托的声明
namespace ConsoleApp1
{
// 带一个参数并且无返回值的委托
//注意:委托相当于一个类型 与class平级,声明在命名空间内。
public delegate void DlgSayHello(string name);
class Program
{
}
}
委托的使用
我们先定义一个打招呼的方法:
public static void SayHello(string name)
{
Console.WriteLine($"{name},你好啊!");
}
随后我们在主函数利用委托将此方法以变量的形式进行传递,并以方法的形式调用。
namespace ConsoleApp1
{
// 带一个参数并且无返回值的委托
//注意:委托相当于一个类型 与class平级,声明在命名空间内。
public delegate void DlgSayHello(string name);
class Program
{
static void Main(string[] args)
{
DlgSayHello dlgsayHello = SayHello;//将方法赋给委托实例
dlgsayHello("小明"); //调用委托实例,相当于调用此方法
Console.ReadKey();
}
}
}
输出结果:
委托链
我们再定义一个方法:
public static void SayBye(string name)
{
Console.WriteLine($"{name},拜拜!");
}
同样传递给前面声明的委托:
namespace ConsoleApp1
{
// 带一个参数并且无返回值的委托
//注意:委托相当于一个类型 与class平级,声明在命名空间内。
public delegate void DlgSayHello(string name);
class Program
{
static void Main(string[] args)
{
DlgSayHello dlgsayHello = SayHello;//将方法赋给委托实例
dlgsayHello += SayBye;//通过+=使得此委托注册了两个实例
dlgsayHello("小明"); //调用委托实例,相当于调用此方法
Console.ReadKey();
}
}
}
输出结果: