Ich bin verwirrt über die BinarySearch-Methode von List<T>
, wenn das Element nicht existiert.C# -Liste <T> .BinarySearch Rückgabewert, wenn der Wert nicht gefunden wurde
Ich habe
bekamList<long> theList = {1, 3, 5, ...}.
theList.BInarySearch(0)
0 zurück, und theList.BInarySearch(3)
gibt 1 zurück, wie erwartet.
Allerdings theList.BinarySearch(1)
gibt -2 zurück, und nicht -1, wie ich es erwarten würde. Das MSDN-Handbuch sagt: "Rückgabewert: Der nullbasierte Index des Elements in der sortierten Liste, wenn Element gefunden wird; andernfalls eine negative Zahl, die das bitweise Komplement des Index des nächsten Elements ist, das größer als Element oder ist , wenn es kein größeres Element gibt, das bitweise Komplement von Count. "
Ein "bitweises Komplement"? Was fehlt mir hier und warum ist das theList.BinarySearch(1) != -1
?
Ich nehme an, Sie suchen nach 'theList.BinarySearch (2)'? '1' ist genau da ... – Kobi
Bitweises Komplement ist einfach eine Zahl, die das Komplement jedes Bits der ersten Zahl ist. 00110101 = ~ 11001010. Es ist wie eine Operation, aber wo! tut ein boolean nicht auf den ganzen Wert, ~ tut ein nicht auf jedem Bit. –