• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

IT-哲

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

lambda表达式的基础应用-委托的应用

Lambda,委托,Action,Func,匿名函数

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表达式在委托中调用匿名函数,是开发过程中必备的手段之一,应用这个手段,可以很大程度的减少我们的代码量,增强代码的可读性,提高我们的开发效率。

最后祝大家能通过这篇文章学习到一些知识,本人第一次博文,如有用词不当之处,还望大家体谅。

 

 

 

 

 

posted on 2013-04-15 15:52  IT-哲  阅读(172)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3