匿名委托Lambda表达式

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

}

你可能感兴趣的:(匿名委托Lambda表达式)