声明变量前考虑最大值

考虑有以下涉及工资运算的代码:

            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个建议》一书时整理的,具体见原书,支持版权所有,^_^

posted @ 2014-08-24 14:25  kiddy-star  阅读(93)  评论(0)    收藏  举报