You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Matheval自定义函数使用报错:Function XPY does not exist

解决Matheval自定义函数未识别的问题

问题说明

使用Matheval表达式引擎时,已在代码中定义xpy函数,但运行表达式时抛出System.Exception: 'Function XPY does not exist'异常。官网明确支持运行时添加自定义函数,但缺少相关示例。

解决方法

Matheval无法直接识别C#中定义的方法,必须显式将自定义函数注册到表达式引擎中,具体步骤如下:

1. 注册自定义函数

使用Expression类的AddFunction方法,将自定义函数绑定到引擎。该方法需要传入三个参数:函数名、参数数量、处理参数并返回结果的委托。

2. 修改后的完整代码

private double xpy(double x, double y)
{
    return x + y;
}

...
org.matheval.Expression exp = new org.matheval.Expression();            
// 注册自定义函数xpy,指定参数个数为2
exp.AddFunction("xpy", 2, (args) => 
{
    double x = Convert.ToDouble(args[0]);
    double y = Convert.ToDouble(args[1]);
    return xpy(x, y);
});
exp.SetFomular("2 * xpy(a, b)");  
exp.Bind("a", 1.2);
exp.Bind("b", 0.8);
var result = (double)exp.Eval();
// 执行后result值为4.0
...

关键注意点

  • 函数名大小写:Matheval默认不区分函数名大小写,但建议保持注册名与表达式中使用的名称一致,避免混淆。
  • 参数类型转换:委托接收的args是object数组,需要自行转换为对应类型后调用自定义方法。

内容的提问来源于stack exchange,提问作者Cotty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 19:43:10