#csharp
Delegate 委托
作为函数容器
先有模板,使用时先注册+=
执行的时候.Inoke(),函数容器内方法就会执行
用法
public delegate void delegateDemo(string Res, string fileName);
//可传参也可以无参
public delegateDemo delegateName;
风险
会被直接赋值
赋值时会导致容器内的函数丢失
Event 事件
事件是具有限定功能的委托
- 不可赋值性
- 仅内部触发
用法
声明时添加event
用法
public delegate void delegateDemo(string Res, string fileName);
//可传参也可以无参
public event delegateDemo delegateName;
优势
关闭了委托的赋值权限
Action
[[委托、事件、Action、Function#Delegate 委托|委托]]的简单使用,是c#封装好的委托写法,也存在和委托一样的问题,赋值是public
用法
public Action actionName(int i);
//一行搞定
Function
[[委托、事件、Action、Function#Delegate 委托|委托]]的简单使用
带返回值的Action
用法
public Func<int> functionName(); //return int
public Func<int,bool> functionName2();//return bool
//一行搞定