将表达式作为参数传递给方法

3

我正在尝试像这样将表达式作为参数传递给函数:

public string MyFunction(bool expression) //what should I set here as parameter type?
{
    return expression ? "True" : "False";
}

public void InvokeMyFunction()
{
    var myString = MyFunction(10 > 1);
}

你有比这更大的用例,还是只是想将布尔值作为字符串返回? - Sayse
你尝试过这个来看看结果吗? - PaulF
@Sayse 这只是一个示例,我想要实现的是更大的情况。 - threesixnine
你是想传递表达式"10 > 1"还是想传递表达式的结果(true)? - PaulF
2
你想要实现什么目标?你所编写的代码已经可以编译了,那么它不满足你希望实现的功能是什么呢? - Jon Skeet
1个回答

9
您可以传递 Func<bool> 来表示返回布尔值的方法。同时,在声明函数时,您可以使用 lambda 语法 () => 来表示匿名方法。
string MyFunction(Func<bool> expression)
{
    return expression() ? "True" : "False";
}

void InvokeMyFunction()
{
    var myString = MyFunction(() => 10 > 1);
}

这里传递的是一个委托实例,其底层方法是使用 => 箭头(lambda)创建的匿名方法。它实际上并没有传递“表达式”。有 Expression<Func<bool>> 可以传递表达式的树形表示。但由于问题不明确,我们不知道在 @NaughtyNinja 的应用程序中是否有用。 - Jeppe Stig Nielsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接