2种形式都是声明委托的形式
2.0以前 C# 命名方法是声明委托的唯一方法 C# 2.0 之后引入匿名方法
C#3.0以及更高版本中 使用Lambda表达式 取代了匿名方法 作为编写内联代码的首选方式
匿名方法
delegate void Anonymity(int x);
Anonymity m_anonymity = delegate (int x) { Debug.Log("匿名函数" + x); };
// Lambda表达式 作用用于匿名函数一样,仅仅是语法不同
delegate bool DeleLambda(int x, int y);
delegate int DeleLambda_A(int x);
delegate void DeleLambda_B();
delegate void DeleLambda_C();
private void Start()
{
m_anonymity(11);
// 1.拉姆达表达式
// <1> 括号中的2个或更多的参数 使用逗号分隔
DeleLambda m_deleLambda = (x, y) => x == y;
bool isEqual = m_deleLambda(3, 3);
Debug.Log(isEqual);
// <2> 如果Lambda 表达式仅有一个参数的时候 可以省略括号
DeleLambda_A m_deleLambda_A = y => y + 3;
int result = m_deleLambda_A(3);
Debug.Log(result);
// <3> 无参数的情况 使用空括号表示
DeleLambda_B m_deleLambda_b = () => SomeFunc();
m_deleLambda_b();
// 语句Lambda
DeleLambda_C m_deleLambda_c = () => { SomeFunc_B(45); };
m_deleLambda_c();
}
void SomeFunc() {
Debug.Log("DeleLambda_B");
}
void SomeFunc_B(int i) {
Debug.Log("i=" + i);
}