我正在创建一个像项目这样的计算器,它需要对变量执行操作+, -, *, /, %, ^
。标准操作类型为var1 OP var2
。我在运行时有两个变量类型,它们可以是Int64
或double
。转换(int为double)并在运行时对变量进行操作
我可以将它们都转换为double并执行计算,但是我更愿意在两个变量都是整数时进行基于整数的计算(否则将两者都转换为double)。这是我迄今为止得到(加法)
if (container1.vType == Interop.variableType.DOUBLE || container2.vType == Interop.variableType.DOUBLE)
return Convert.ToDouble(container1.value) + Convert.ToDouble(container2.value);
return (Int64)container1.value + (Int64)container2.value;
然而,由于多个操作,使用相同/相似的代码一遍又一遍地将产生不必要的冗余(我只是必须改变运营商)。
那么,我该如何做到这一点,以便它具有高性能和最小/无冗余?
什么是container1.values和container2.values的编译时类型? – Vikhram
他们是对象 – Crimson7
你有什么不必要的冗余?另外,你期望在container1.value和container2.value中有什么?他们是弦乐? Int64的?双? Convert.ToDouble用于将字符串转换为double。 (Int64)只是在投射。如果你的值是字符串,那么你可能需要使用Convert。但是,如果值是int或double,那么你可以投它。 – kurakura88