zoukankan      html  css  js  c++  java
  • 匿名方法和Lambda表达式

    出于MVVM学习的需要,复习下匿名方法和Lambda表达式,因为之前用的也比较少,所以用的也不是很熟练,Baidu下相关的知识,写了这个Demo,目标是用简单的方法展示这个怎么用。

    这里偏重的和LINQ中的Lambda表达式 

    var filesLookup = files.ToLookup(f=>f.Substring(f.LastIndexOf('.')).ToUpper());

    有些不同,两种不同的地方使用吧。
    DebugLZQ把要写的话,都写在Demo的注释中了,相关类似的东西网上很多,这里就不墨迹了,如下:

    using System;
    
    namespace 匿名函数和Lambda表达式
    {
        class Program
        {
            /// <summary>
            /// Func和Action类是特殊的类型,它们允许你在不必指定自定义委托类型的情况下,去使用委托。在整个.NET框架中都可以使用它们。
            /// 
            /// Lambda表达式已经广泛代替了匿名方法,因为它是从C# 3.0开始引入的。Lambda表达式与匿名方法有很多同样的功能,但更便于使用。
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                //Action委托封装不返回结果的方法。换句话说,这种委托只能用于以void关键字定义的那些方法。
                Action<int,int> funa = delegate(int x, int y) { Console.WriteLine(x+y); };//匿名方法
    
                Action<int, int> funb = (int x, int y) => { int z = x + y; Console.WriteLine(z); };//Lambda表达式
    
                //输出
                funa(3, 4);
                funb(3, 4);
                Console.ReadKey();
                
                //System.Func委托除了可以返回结果以外,它与Action委托完全相同。最简单的Func实现没有参数。
                Func<int, int, int> fun1 = delegate(int x, int y) { return x * y; };//匿名方法
    
                Func<int, int, int> fun2 = (int x, int y) => { return x * y; };//Lambda表达式
                //输出
                Console.WriteLine(fun1(3, 4));
                Console.WriteLine(fun2(3, 4));
                Console.ReadKey();            
            }
        }
    }

    一图胜过千言,程序运行如下:

  • 相关阅读:
    起泡排序引申出的问题
    关于NPC和NP-Hard问题
    我的书单(更新中)
    OpenCV2学习笔记03:Qt中配置OpenCV环境
    Ubuntu 14.04为浏览器添加Flash插件
    CSS3基础
    HTML5进阶
    拖拽上传及读取文件实现
    生产者消费者模型
    进程
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/2804929.html
Copyright © 2011-2022 走看看