List<T>
アイテムが存在しない場合のBinarySearchメソッドについて混乱しています。
私が持っている
List<long> theList = {1, 3, 5, ...}.
theList.BInarySearch(0)
期待どおりに0をtheList.BInarySearch(3)
返し、1を返します。
ただし、期待どおり-1ではなく-2theList.BinarySearch(1)
を返します。MSDNマニュアルには、次のように記載されています。「戻り値:アイテムが見つかった場合は、並べ替えられたリスト内のアイテムのゼロベースのインデックス。それ以外の場合は、アイテムよりも大きい次の要素のインデックスのビット単位の補数である負の数。より大きな要素がない場合は、Countのビット単位の補数です。」
「ビット単位の補数」?私はここで何が欠けていますか、そしてそれはなぜtheList.BinarySearch(1) != -1
ですか?