Managed空间

彭刚的blog
随笔 - 26, 评论 - 153, 引用 - 81

导航

标签

每月存档

最新留言

广告

 

 接受非负整数为参数的方法通常需要做范围检查。下面是一个例子(ArrayList.RemoveAt):

        public virtual void RemoveAt(int index) {

            if (index < 0 || index >= _size) {

throw new ArgumentOutOfRangeException("index");

            }

                    

        }

实际上这里并不需要两次检查。如下的代码可以起到相同的作用:

        public virtual void RemoveAt(int index) {

            if ((uint)index >= _size) {

throw new ArgumentOutOfRangeException("index");

            }

                    

        }

当然不到必要的时候不要使用这个Trick因为这会降低程序的可读性。

 

打印 | 张贴于 2004-07-17 08:20:00 | Tag:Performance

留言反馈

#re: 减少范围检查(range check)的小Trick 编辑
trick - 贱女人,相当不雅的字眼。
2006-06-06 21:15:00 | [匿名:小胖胖]
#re:减少范围检查(range check)的小Trick 编辑
减少范围检查(range check)的小Trickooeess
2005-06-16 14:08:00 | [匿名:气味检测仪]
#re:减少范围检查(range check)的小Trick 编辑
减少范围检查(range check)的小Trickooeess
2005-06-16 14:00:00 | [匿名:测汞]
#re:减少范围检查(range check)的小Trick 编辑
^_^,Pretty Good!
2005-04-16 05:37:00 | [匿名:尼威nivelco]
#re:减少范围检查(range check)的小Trick 编辑
^_^,Pretty Good!
2005-04-10 20:11:00 | [匿名:CO一氧化碳检测仪]
#回复: 减少范围检查(range check)的小Trick 编辑
可读性永远是第一位的
2004-07-19 18:28:00 | [匿名:洗洗睡了]
#回复: 减少范围检查(range check)的小Trick 编辑
不会呀?这里并不涉及运算。何况缺省情况下CLR中的算术预算是unchecked。
这个trick的原理是:如果在负数和正数间作无符号比较,负数比正数大。
2004-07-19 10:12:00 | [匿名:彭刚]
#回复: 减少范围检查(range check)的小Trick 编辑
如果是负数,抛出的overflowexception吧?1
2004-07-19 09:14:00 | [匿名:Lostinet]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0