【发布时间】:2010-08-15 09:10:58
【问题描述】:
如果项目不存在,我对List<T> 的 BinarySearch 方法感到困惑。
我有
List<long> theList = {1, 3, 5, ...}.
theList.BInarySearch(0) 返回 0,theList.BInarySearch(3) 返回 1,正如预期的那样。
但是,theList.BinarySearch(1) 返回 -2,而不是我期望的 -1。 MSDN 手册说:
"返回值:如果找到 item,则返回排序 List 中 item 的从零开始的索引;否则,一个负数,它是下一个大于 item 的元素的索引的按位补码,或者,如果没有更大的元素,Count 的按位补码。"
“按位补码”?我在这里错过了什么,为什么theList.BinarySearch(1) != -1?
【问题讨论】:
-
我想您正在搜索
theList.BinarySearch(2)?1就在那儿…… -
按位补码只是一个数字,它是第一个数字的每一位的补码。 00110101 = ~ 11001010。这就像一个非操作,但在哪里!对整个值进行布尔运算,~ 对每一位都进行运算。
标签: c# list generic-list