int x; long y = 123456789101112; x = (int)y; Console.WriteLine(x);
输出结果:
我们知道long类型的取值范围是-9223372036854775805~+9223372036854775807;int类型的是:-2147483648~+2147483647
上面的代码中,由于long变量的值超过了int能容纳的最大值,造成了数据的丢失;像这样有可能造成数据丢失或引发异常的任何转换都需要执行显式转换(explicit);
相反的就是执行隐式转换(implicit).
用chencked检查上面的代码
从图得知上面的