【发布时间】:2011-03-30 01:54:03
【问题描述】:
谁能解释为什么下面的代码会抛出错误。可以通过将 -1 值转换为小数 (-1M)、将运算符重载更改为接受 int 或不使用可为空的对象来轻松修复它。
我注意到只有 VS2008 的 VS2010 不会引发错误。
class Program
{
static void Main(string[] args)
{
var o1 = new MyObject?(new MyObject(2.34M));
o1 *= -1;
}
}
public struct MyObject
{
public MyObject(Decimal myValue)
{
this.myValue = myValue;
}
private Decimal myValue;
public static MyObject operator *(MyObject value1, decimal value2)
{
value1.myValue *= value2;
return value1;
}
}
【问题讨论】: