c#委托
委托概念
-
概念:Delgate(委托、代理):委托其实是一种程序特性,委托用来表示方法,委托其实就是方法的指针。
-
为什么要使用委托?
正常情况下:A对象中,创建了B对象,如果B对象中有一个公共行为C,那么A中是可以调用的。
class A
{
B b = new B();
void MyMethod()
{
b.c();
};
void NewMethod()
{
}
}
class B
{
}
如果B想调用A中的行为NewMethod是否可以?一般是不可以的,使用委托可以实现。
委托的基本使用
- 声明委托(定义方法的原型、方法的参数类型和个数)
// 【1】声明委托
public delegate void LectureDelgate();
- 根据委托编写具体方法
//【2】根据委托编写具体方法
static void ChangLecture1()
{
Console.WriteLine("C#委托");
}
static void ChangLecture2()
{
Console.WriteLine("C#MVC开发技术");
}
static void ChangLecture3()
{
Console.WriteLine("C#项目实战开发");
}
- 创建委托变量(委托是引用类型)
// 【3】创建委托变量
LectureDelgate lecture1;
- 将委托变量和一个或多个符合委托定义的方法关联
// 【4】将委托变量和一个和多个符合委托定义的方法关联
lecture1 = ChangLecture1;
lecture1 += ChangLecture2;
lecture1 += ChangLecture3;
通过+=
给委托添加关联方法,方法会按照关联的顺序依次调用。这就是委托的"多路委托"或"多播委托"。
通过-=
给委托移除关联方法。
lecture1 -= ChangLecture3;
- 使用委托变量
lecture1();
lecture1.Invoke();// 委托特有的方法