如何从lambda函数返回一个值

时间:2014-03-08 19:37:42

标签: c# .net lambda

我有这段代码,而且工作正常,

    private void button1_Click(object sender, EventArgs e)
    {
        var func = new Action<int, int>((a, b) =>
        {
            var sum = a + b;
            MessageBox.Show(sum.ToString());
            //How can I return sum?
        });

        //var result=func(2,3);
        func(2, 3);
    }

如何更改func以返回 sum 变量,我想使用函数:

   var result=func(2,3);

1 个答案:

答案 0 :(得分:4)

Action表示不返回值的方法。

如果您想要返回一个值,则需要使用Func<TResult> 它封装了一个返回TResult参数指定类型值的方法。

因此,在您的情况下,您需要Func<T1, T2, TResult>,其中参数为int,返回类型也是如此:

var func = new Func<int, int, int>((a, b) =>
{
    var sum = a + b;
    MessageBox.Show(sum.ToString());
    return sum;
});

var result=func(2,3);