具有多个返回值的谓词

时间:2016-06-21 20:43:01

标签: c# return predicate

我正在做家庭作业,我的老师问了这个问题我无法弄清楚如何回答:

使用谓词委托编写Lambda表达式,使用double作为
     参数并返回bool,double和string作为值,您不能使用元组。

我知道在C#中“返回多个值”的唯一方法是使用元组,我不能在这里做或使用out参数。我尝试使用out参数创建一个谓词,并且语法错误或者我必须以不同的方式执行。这是我尝试参考。

public static void Main()
    {
        double outDouble = 1.0;
        string outString = "string";
        Predicate<double, out double, out string> pred = 
            (double dVal, out double outDouble, out string outString) => 
        {
            if (dVal <= 1.0)
            {
                outDouble = 1.0;
                outString = "string";
                return true;
            }
          else 
            {
                outDouble = 0.0;
                outString = "";
                return false;
            }
        };
        bool predBool = pred(2.0, out outDouble, out outString);
        WriteLine(predBool);
        ReadKey(true);
    }

请帮助找到这个问题的答案。 :)

1 个答案:

答案 0 :(得分:0)

你可以通过关闭它们来改变lambda中的变量,而不是通过显式地将它们作为参数或返回值传递。

double outDouble = 1.0;
string outString = "string";
Predicate<double> pred = dVal => 
{
    if (dVal <= 1.0)
    {
        outDouble = 1.0;
        outString = "string";
        return true;
    }
  else 
    {
        outDouble = 0.0;
        outString = "";
        return false;
    }
};
bool predBool = pred(2.0);
WriteLine(predBool);
ReadKey(true);