gpt4 book ai didi

c# - 如何获取按值传递的方法参数的原始表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:29 25 4
gpt4 key购买 nike

代码示例:

public class A{
public void Check(bool condition){
Console.WriteLine(???);
}
public void Test_1(){
Check(2 > 3);
}
public void Test_2(){
int x=3;
Check(x != 6);
}
}

我需要在方法中写入控制台,检查不是参数 condition 的值,而是它的原始表达式。例如,当在程序中调用方法 Test_1 时,我希望在控制台“2 > 3”上看到。当在程序中调用方法 Test_2 时,我希望在控制台上看到“x != 6”。

最佳答案

您可以使用 System.Linq.Expressions作为 Check 中的参数,这将允许您使用 lambda 传递表达式。一旦你有了 Lambda 表达式,你就可以使用 LambdaExpression.Body获取字符串形式的表达式。

public static void Check(int n1, int n2, Expression<Func< int, int, bool>> exp)
{
var compiled = exp.Compile();
Console.WriteLine("Expression: " + exp.Body.ToString() + "\t Result: " + compiled.Invoke(n1,n2));
}

public void Test_1(){
int a = 2, b = 3;
Check(a,b, (x,y)=>x > y);
}

public void Test_2(){
int a=3;
int b=6;
Check(a,b, (x,y)=> x != y);
}

void Main()
{
Test_1();
Test_2();
}

输出

Expression: (x > y)   Result: False 
Expression: (x != y) Result: True

关于c# - 如何获取按值传递的方法参数的原始表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28804709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com