zoukankan      html  css  js  c++  java
  • 匿名方法,泛型委托,Lambda表达式

    匿名方法,泛型委托,Lambda表达式 

    private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                //匿名方式
                //通过delegate关键字,声明一个没有方法名的方法体。
                GetValue getValue = new GetValue
                (delegate(string a)
                {
                    MessageBox.Show(a);
                }
                );

                getValue("aaa");
            }

            private void Button_Click_2(object sender, RoutedEventArgs e)
            {
                Func<string,string> GetValueFunc = new Func<string,string>(delegate(string a)
                {
                    return "测试的为:" +  a;
                });

                MessageBox.Show(GetValueFunc("泛型委托"));
            }

            private void Button_Click_3(object sender, RoutedEventArgs e)
            {
                //lambda表达式可以看作是一个匿名方法,以“=>”运算符为标志,“=>”左边部分为传入该匿名方法的两个参数,
                //注意,这两个参数我们没有声明类型,但编译器会根据前面泛型委托的定义自动推断出其参数类型(返回值类型是同样的原理)。
                //“=>”右边为返回值。
                Func<int, int, string> delegate1 = (x, y) => x > y ? x.ToString() : y.ToString();
                string STR = "最大的数位:" + delegate1(10, 20);
                MessageBox.Show("lambda表达式:" + STR);

                /*Lambda 的一般规则如下:

                   Lambda 包含的参数数量必须与委托类型包含的参数数量相同。
                   Lambda 中的每个输入参数必须都能够隐式转换为其对应的委托参数。
                   Lambda 的返回值(如果有)必须能够隐式转换为委托的返回类型。

                   请注意,Lambda 表达式本身没有类型,因为常规类型系统没有“Lambda 表达式”这一内部概念。
                   但是,有时会不正式地论及 Lambda 表达式的“类型”。 在这些情况下,类型是指委托类型或 Lambda
                   表达式所转换为的 Expression 类型。*/
            }

  • 相关阅读:
    Quartz:基本用法总结
    Linux: ssh免密登陆
    AOP计算方法执行时长
    架构师常用的5种图
    正态分布及正态随机变量
    【转】Ubuntu下解决Depends: xxx(< 1.2.1) but xxx is to be installed
    Robotium和Espresso大PK——速度篇
    使用docker安装mysql并连接
    直接拷贝数据文件实现Oracle数据迁移
    ORA-08103:对象不再存在
  • 原文地址:https://www.cnblogs.com/iwangjun/p/2406983.html
Copyright © 2011-2022 走看看