gpt4 book ai didi

c# - 找出函数内部使用了哪些变量?

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

我正在用 C# 编写开源工程计算器应用程序。

有一个类叫做CalcVar , 表示单个计算器变量。它们被添加到 Calculator类(class)。关于 build CalcVar变量,它被传递给一个“方程式”lambda 函数(类型为 Func<double> ,如下所示),其主体可以包含任意数量的 CalcVar对象(它们也属于同一个 Calculator 类),将它们相乘/相加/相除/以任何方式组合在一起并返回此 CalcVar 的值对象。

例如

class OhmsLaw : Calculator
{
CalcVar voltage;
CalcVar current;
CalcVar resistance;

public OhmsLaw() : base("Ohm's Law", "Ohm's law calculator.")
{
this.voltage = new CalcVar(() => current.RawVal*resistance.RawVal);

this.current = new CalcVar(() => voltage.RawVal / resistance.RawVal);

this.resistance = new CalcVar(() => voltage.RawVal / current.RawVal);
}
}

我希望能够以某种方式算出其他 CalcVar在给定的 CalcVar 中使用变量的 equation函数,这样我就可以计算出变量的依赖关系。

我该怎么做呢?我觉得我需要在 CalcVar 时发出事件或类似事件的 RawVal被访问,并以某种方式让有问题的 CalcVar 订阅这些事件并记录哪些事件在调用 equation.Invoke() 时触发。 .

最佳答案

您可能希望 CalcVar 接受表达式树而不是 lambda。
例如

Expression<Func<double>>

代替

Func<double>

这样您就可以在 CalcVar 中检查表达式树的主体并查看依赖项是什么。您可以在这里查看表达式树的介绍:

What are Expression Trees and how do you use them and why would you use them?

关于c# - 找出函数内部使用了哪些变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34622074/

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