我正在做家庭作业,我的老师问了这个问题我无法弄清楚如何回答:
使用谓词委托编写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);
}
请帮助找到这个问题的答案。 :)
答案 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);