动态算术运算符

时间:2011-02-05 19:57:07

标签: c# dynamic

我想知道是否有办法实施下一个例子:

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

由于

3 个答案:

答案 0 :(得分: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可能很有趣。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这个主题叫做“表达”,关于它有很多样本。最好的一个here

祝你好运