声明变量前考虑最大值
考虑有以下涉及工资运算的代码:
ushort salary = 65534;
salary = (ushort)(salary + 1);
Console.WriteLine(string.Format("第一次工资总数:{0}", salary));
salary = (ushort)(salary + 1);
Console.WriteLine(string.Format("第二次工资总数:{0}", salary));
/*
输出:第一次工资总数:65535
* 第一次工资总数:0
*/
由于采用了ushort类型,导致第二次累加得出结果0,这个显然不是我们想要的。这就是我们在选择变量的数据类型是要考虑的:数据的范围,最大值是否溢出。
补救措施:
checked
{
salary = (ushort)(salary + 1);
Console.WriteLine(string.Format("第一次工资总数:{0}", salary));
salary = (ushort)(salary + 1);
Console.WriteLine(string.Format("第二次工资总数:{0}", salary));
}
/*
系统抛出异常:System.OverflowException (算术运算导致溢出)
*/
这样就可以终止程序运行,提示开发者就行修改。
注:以上是在学习《编写高质量代码改善c#程序的157个建议》一书时整理的,具体见原书,支持版权所有,^_^
道之所在,虽千万人吾往矣
浙公网安备 33010602011771号