// 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);
}