当前位置: 首页 > 编程语言 > C#

C#,User-DefinedFormula分享

时间:2023-04-10 16:04:14 C#

C#,User-DefinedFormula我需要让用户能够在datagridview中编写自己的公式。类似于Excel中的函数。公式定义示例:xhttp://sofzh.miximages.com/c%23/6e2004.jpg所以用户在公式单元格中编写自己的公式,然后在其他工作表中显示每个公式的结果。我怎样才能做到这一点?我会尝试NCalcNCalc是.NET中的数学表达式计算器。NCalc可以解析任何表达式并对结果求值,包括静态或动态参数和自定义函数。Dictionarydict=newDictionary(){{"收入",1000},{"税收",5}};stringexpressionString="收入*税收";NCalc.Expressionexpr=newNCalc.Expression(expressionString);expr.EvaluateParameter+=(name,args)=>{args.Result=dict[name];};int结果=(int)expr.Evaluate();您的公式可以作为C#进行操作,并使用SystemCodeCom.Compiler进行动态编译,您可以动态运行它以输入您的变量值。否则你将不得不使用某种迷你解析器/编译器——这是一个相当专业的技能集,并且会很快变得复杂——尤其是当你的公式变得更复杂时(可能)。这里和这里有关于动态编译的代码项目文章。但是网上还有很多其他例子。有很多方法可以做到这一点,它们都围绕着将公式转换为可执行代码。您想编写自己的解析器,还是使用现有的解析器?C#本身、IronPython、IronRuby和一些现成的组件。如果您正在使用完整的解析器,您可能想看看如何限制用户可以无意或以其他方式使用它做什么......某种表达式构建器(选择两个命名值和一个运算符)可能是最好的方法,但作为模块化,您既可以构建表达式又可以对其进行评估,以便以后可以对其进行增强。然而,考虑到它们看起来多么简单,我想预定义表达式(作为元数据从某种后备存储加载,并让它选择其中一个而不是用户输入它。你可以轻松地花费数月的时间在设计方面,值得吗?我最近在做的项目中有一个类似的需求(表达式的动态解析),最终使用了WF(WindowsWorkflowFoundation)的VB表达式。这当然取决于这个功能对你有多重要是以及你愿意付出多少努力。在我看来,它比NCalc更好,原因有几个:无论如何,这是一篇关于这个主题的简短博客文章。几年前我创建了信天翁表达式解析器。它是开源的有一段时间了,不过最近总算绕过,发布了v2.02,并添加了文档。正在积极维护中。它有几个不错的特性:以上是C#学习教程:C#,所有内容共享用户自定义公式对你有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击维权联系管理员删除。如需转载,请注明出处: