• 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());
    复制代码
  • 相关阅读:
    【转】简单地用nfs实现linux间文件共享
    CentOS 6.1上部署SVN时遇到的问题及解决方法
    ubuntu下部署SVN服务
    LINUX GBK>UTF8文件编码批量转换脚本[转]
    Thinkpad E420 3YC(双显卡)安装64位Ubuntu 11.10笔记
    拦截器详解
    快排的算法
    冒泡排序的算法
    struts2的输入校验
    ssh整合开发
  • 原文地址:https://www.cnblogs.com/WTFly/p/5252746.html
Copyright © 2020-2023  润新知