public override int Calculate() { switch (Op) { case Operator.Mul: return(LeftNode.Calculate() * RightNode.Calculate()); case Operator.Div: return(LeftNode.Calculate() / RightNode.Calculate()); case Operator.Mod: return(LeftNode.Calculate() % RightNode.Calculate()); case Operator.Plus: return(LeftNode.Calculate() + RightNode.Calculate()); case Operator.Minus: return(LeftNode.Calculate() - RightNode.Calculate()); default: throw new ArgumentOutOfRangeException(); } }
public sealed override double Calculate() => LeftNode.Calculate() + RightNode.Calculate();
public sealed override int Calculate() => LeftNode.Calculate() - RightNode.Calculate();