C#将字符串转换为运算符

时间:2012-11-23 03:24:03

标签: c#

我想在c#

中将字符串转换为运算符
        **string type = "+";
        int d = 22;
        int c = 33;
        int total;
        total = d + type + c;**

怎么做?

此致

1 个答案:

答案 0 :(得分:1)

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

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

在C#中,可以使用简单的switch语句来实现这样的数据结构(当然,您可以根据需要无限制地使用它,但这是最简单的解决方案)。

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

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

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