zoukankan      html  css  js  c++  java
  • Expression<Func<T,TResult>>和Func<T,TResult>

    1.Expression<Func<T,TResult>>是表达式

    //使用LambdaExpression构建表达式树
                Expression<Func<int, int, int, int>> expr = (x, y, z) => (x + y) / z;
                Console.WriteLine(expr.Compile()(1, 2, 3));

    https://msdn.microsoft.com/zh-cn/library/system.linq.expressions.expression(v=vs.100).aspx

    https://msdn.microsoft.com/zh-cn/library/bb335710(v=vs.100).aspx

    2.Func<T, TResult> 委托

    封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。
    public delegate TResult Func<in T, out TResult>(T arg)
    类型参数
    in T
    此委托封装的方法的参数类型。
    该类型参数是逆变的。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
    out TResult
    此委托封装的方法的返回值类型。
    该类型参数是协变的。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
    参数
    arg
    类型:T
    此委托封装的方法的参数。
    返回值
    类型:TResult
    此委托封装的方法的返回值。

    复制代码
      string mid = ",middle part,";
                ///匿名写法
                Func<string, string> anonDel = delegate(string param)
                {
                    param += mid;
                    param += " And this was added to the string.";
                    return param;
                };
                ///λ表达式写法
                Func<string, string> lambda = param =>
                    {
                        param += mid;
                        param += " And this was added to the string.";
                        return param;
                    };
                ///λ表达式写法(整形)
                Func<int, int> lambdaint = paramint =>
                    {
                        paramint = 5;
                        return paramint;
                    };
                ///λ表达式带有两个参数的写法
                Func<int, int, int> twoParams = (x, y) =>
                    {
                      return  x*y;
                    };
                MessageBox.Show("匿名方法:"+anonDel("Start of string"));
                MessageBox.Show("λ表达式写法:" + lambda("Lambda expression"));
                MessageBox.Show("λ表达式写法(整形):" + lambdaint(4).ToString());
                MessageBox.Show("λ表达式带有两个参数:" + twoParams(10, 20).ToString());
    复制代码
  • 相关阅读:
    聊一聊正则表达式,最全最常用总结
    11个优秀的Android开发开源项目
    一招教你打造一个滑动置顶的视觉特效
    这些优质的电子书 开发必备【干货精选】
    用Kotlin破解Android版微信小游戏跳一跳
    2017上半年技术文章集合【Android】—184篇文章分类汇总
    经常用到的字符串函数
    EhLib使用说明
    Delphi中本年、本月、本周的第一天和最后天
    Delphi中关于listview的一些使用
  • 原文地址:https://www.cnblogs.com/WTFly/p/5252746.html
Copyright © 2011-2022 走看看