lambda表达式的基础应用-委托的应用
lambda表达式在委托的应用
做为一个初学者,如果想通过调用方法的形式计算一个加法,往往会这样做
1 static void Main(string[] args) 2 { 3 int a = 10; 4 int b = 20; 5 int result = add(a, b); 6 Console.WriteLine(result.ToString()); 7 } 8 9 static int add(int num1, int num2) 10 { 11 return num1 + num2; 12 }
这个例子非常简单,我们就从这个简单的例子去学习如何通过委托调用一个方法
首先定义一个委托
delegate int deladd(int a, int b);
之后我们看看如何去通过委托去调用我们定义的方法
class Program { static void Main(string[] args) { deladd del = add; Console.WriteLine(del(10, 20).ToString()); Console.ReadLine(); } static int add(int num1, int num2) { return num1 + num2; } }
结果是一样的 ,都是输出30
现在进入我们今天的重点,如何去应用lambda表达式,实现上面的效果
static void Main(string[] args) { deladd del = (a, b) => { return a + b; }; Console.WriteLine(del(10, 20).ToString()); Console.ReadLine(); }
这次我们没有去定义一个名为add的方法,而是通过lambda表达式让委托调用一个匿名的方法,该方法的参数为a,b,我们没有去声明参数的数据类型,也没有去声明返回值的类型,因为这些都在我们声明委托的时候都已经定义过了。
说到这里,大家应该大致明白了如何通过委托去实现一个方法,然而,正如我们所见,我们每次都需要在类的外部去定义一个委托,显得有点麻烦。
这时候Func就出场了。
Func是.NET里面的内置委托,它有很多重载,而最后一个参数是他的返回值类型,也就是说,如果我们的委托是2个参数的,那么Func就要有3个参数 如:Func<t1,t2,t3>
static void Main(string[] args) { Func<int, int, int> say = (a, b) => { return a + b; }; Console.WriteLine(say(10,20)); Console.ReadLine(); }
怎么样,是不是简单多了,然而这样写还是有它的不足,因为Func是必须有返回值的,这时候我们就要说到Action了
Action委托:参数任意,但没有返回类型,即Void。
声明一个没有参数的Action:Action Add= XXX;
声明一个带参的Action:Action<string> Add = XXX;
我们来看看应用,还是同样的例子,通过Lambda表达式去实现
static void Main(string[] args) { Action<int, int> Add = (a, b) => { Console.WriteLine(a+b); }; Add(10,20); Console.ReadLine(); }
这如同我上面所介绍的Lambda表达式在委托中调用匿名函数,是开发过程中必备的手段之一,应用这个手段,可以很大程度的减少我们的代码量,增强代码的可读性,提高我们的开发效率。
最后祝大家能通过这篇文章学习到一些知识,本人第一次博文,如有用词不当之处,还望大家体谅。
浙公网安备 33010602011771号