0

我想在c#中将字符串转换为运算符

        **string type = "+";
        int d = 22;
        int c = 33;
        int total;
        total = d + type + c;**

怎么做 ?

问候,

4

1 回答 1

1

您不能将字符串转换为“运算符”。运算符是为其操作数定义的,如果您不知道您的操作数是什么,将字符串转换为运算符是没有意义的。

假设您确实知道您拥有哪些操作数,那么问题本身就不再是“转换”,而是实际上您正在尝试构建解析引擎。这是一个相当困难的问题。除非您实际上正在尝试创建自己的脚本语言或类似的东西,否则使用查找表可能更容易,表中的每个元素都引用可以在操作数上运行的某些方法。

在 C# 中,可以使用一个简单的语句来实现这样的数据结构switch(当然,您可以将其无限化,但这是最简单的解决方案)。

switch( type )
{
    case "+":
        return plusOperator(d, c);
    case "-":
        return minusOperator(d, c);
}

然后,您将定义合适的方法,例如plusOperatorminusOperator实际实现程序的逻辑。

这个解决方案相当肮脏,因为您对某些行为进行了硬编码,但实际上,如果您在良好的系统架构方面想要的远不止这些,它就会成为一个解析问题。如果你走这条路,四人组设计模式将成为很好的参考资料(特别是解释器、迭代器和复合等模式)

于 2012-11-23T03:35:17.817 回答