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 类型。*/
            }

  • 相关阅读:
    C# 批量图片合并工具(附源代码)
    C# 封装
    SQL语句基础
    c# My计算器源码
    炸酱面
    烧茄子
    Linux Desktop Entry 文件深入解析
    硬盘安装ubuntu
    使用C语言进行面向对象的开发--GObject入门[2]
    GObject对象系统 (1)
  • 原文地址:https://www.cnblogs.com/iwangjun/p/2406983.html
Copyright © 2011-2022 走看看