解决方案 »

  1.   

    两边需要强制类型转换成decimal
      

  2.   

    因为'==’运算符不是虚函数,判断object==object的时候比较的是引用。decimal作为object需要装箱,因而引用一定不相同。
    而object.Equals是虚函数,可以被decimal重载,因而可以正确比较。
    比如:decimal d = 1.03m;
    bool e1 = (object)d == (object)d;  // false,两次装箱的引用不相等object d1 = 1.03m;
    object d2 = 1.03m;
    bool e2 = d1 == d2;                // false,引用不相等
    bool e3 = d1.Equals(d2);           // true,实际调用了decimal.Equals,结果相等。