具有多个 return 值的谓词

Predicate with multiple return values

我正在做家庭作业,我的老师问了这个我不知道如何回答的问题:

使用 Predicate 委托编写一个 Lambda 表达式,双精度作为 a
参数并返回 bool、double 和 string 作为值,则不能使用元组。

我知道在 C# 中 "return multiple values" 的唯一方法是使用元组,我在这里不能这样做,或者使用 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);
    }

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

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

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);