在項目不存在的情況下,我對於List<T>
的BinarySearch方法感到困惑。C#List <T> .BinarySearch當值沒有找到時返回值
我有
List<long> theList = {1, 3, 5, ...}.
theList.BInarySearch(0)
返回0,和theList.BInarySearch(3)
返回1,符合市場預期。
但是,theList.BinarySearch(1)
返回-2,而不是-1,如我所料。 MSDN手冊中說: 「返回值:如果找到項目,則排序列表中的項目的從零開始的索引;否則,爲負值,它是大於項目的下一個元素的索引的按位補數或,如果沒有更大的元素,Count的逐位補碼「。
「按位補碼」?我在這裏錯過了什麼,爲什麼它是theList.BinarySearch(1) != -1
?
我想你正在尋找'theList.BinarySearch(2)'? 「1」就在那裏...... – Kobi 2010-08-15 09:25:15
按位補碼只是一個數字,它是第一個數字每個位的補碼。 00110101 =〜11001010.這就像一個不操作,但在哪裏!做一個布爾值不是整個值,〜做一個不在每個位上。 – 2010-08-15 12:48:03