C#高级编程中
第七章预算符和强制类型转换中有这样的代码
checked
{
Currency balance = (Currency)(-50.50);
}
其中,Currency是一个自定义的类,其中重写了强制类型转换
public static explicit operator Currency (float value)
{
uint dollars = (uint)value;
ushort cents = (ushort)((value - dollars) * 100);
return new Currency(dollars, cents);
}
如果单独对该方法体内部的代码加上checked可以触发负数赋值给uint的异常,但是如果像上面通过类的强制类型转换来调用重写的方法的话则不会触发。书上说的是
溢出异常实际发生的位置根本不在Main()例程中——它是在强制转换运算符的代码中发生的,该代码在Main()方法中调用,而且没有标记为checked
这是什么意思呢?请指教