匿名方法,泛型委托,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 类型。*/
        }

转载于:https://www.cnblogs.com/iwangjun/archive/2012/03/19/2406983.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值