匿名方法的概念:这个方法没有具体的名称,而只有委托关键字、方法参数、方法体,所以称为匿名方法,匿名方法允许将代码块通过委托变量作为参数传递,以代替单独定义的方法。
首先声明一个委托:
public delegate int CalculatorDelegate(int a, int b);
然后使用匿名方法:
CalculatorDelegate objCal = delegate (int a, int b)
{
return a + b;
};
int result = objCal(10, 40);
Console.WriteLine(result );
输出结果:50
c#3.0 引入了Lambda表达式,利用它们可以更简练地编写代码块。Lambda表达式:(参数列表)=>{方法体} goes to.
首先定义一个委托:
public delegate int CalculatorDelegate(int a, int b);
第一种Lambda表达式方法:CalculatorDelegate objCal = (int a, int b) => { return a + b; };
更简化的方法:CalculatorDelegate objCal = (a,b) => { return a + b; };
int result = objCal(10,20);
Console.WriteLine(result );
输出结果为:30
实例二:
public delegate int MathOne(int a);
MathOne objMath=a=>a*a;
int result=objMath(10);
输出result结果为:100
说明:参数列表中的参数类型可以是“明确”类型或者是“推断”类型,如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来。Lambda表示式本身就是匿名方法,Lambda表达式的参数允许不指名参数类型,而匿名方法的参数必须明确指明参数类型,Lambda表达式方法体允许由单一表达式或者多条语句组成,而匿名方法不允许单一表达式形式。