2011-02-05 168 views
0

我想知道是否有实现下一个示例的方式:动态算术运算符

string tmp = "+"; 
int ans1 = 4 tmp 5; 
tmp = "+"; 
int ans2 = 4 tmp 5; 

感谢

+1

你为什么想这样做?如果你想构建/解析表达式树,有更好的方法。 – 2011-02-05 20:11:16

回答

0

在确切的是语法 - NO。使用一些其他语法(更接近C#) - 也许

0

这个主题由“表达式”调用,有很多关于它的示例。最好的一个here

好运

4

你可以做到这一点,至少:

MyOpType tmp = "+"; 
int ans1 = 4 & tmp & 5; 
tmp = "+"; // Could be any operator implemented by MyOpType 
int ans2 = 4 & tmp & 5; 

通过创建一个名为MyOpType类具有隐含的运算符重载从string到它的自我。这也会导致运算符重载&返回一些运算符类型,它会丢失一个参数。

但是,我不建议做这样的“黑客”,因为它不清楚代码的作用。此外,我相信有更好的方法来做你应该做的事情。所以,如果你解释的背景下再我们可能会找到一个更好的解决办法:)

我猜是这样Result("+", 4, 5)将是更清洁和更容易实现。这引出了我的问题:你从哪里获得运营商?用户?否则,肯定会找到更好的解决方案。如果你想要某种形式的“动态解释”,那么.Net Expressions trees可能会很有趣。

+0

感谢您的回答。 我有我从中desirialize的XML文件。 (数学问题) 我需要计算问题的结果。目前我通过4个丑陋的开关/外壳声明来实现这个部分。因此我想知道如果我能更清楚地实施它。 (运营商变量是动态的,我避免开关/案例陈述)... 有什么更好的解决方案? :) 谢谢 – Igal 2011-02-05 23:48:32