Expression<Func<T,TResult>>和Func<T,TResult>

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;
    };
    string aa = anonDel("Start of string");
    string bb = lambda("Lambda expression");
    string cc = lambdaint(4).ToString();
    string dd = twoParams(10, 20).ToString();

  

原文地址:https://www.cnblogs.com/wolfocme110/p/5349002.html