1
我在List.BinarySearch中得到了一個奇怪的結果。 在存在「$ in」的列表中搜索「$ in」時,結果爲-4。 下面是一個突出顯示問題的測試案例。只有尋找「$ in」的情況失敗。列表<T> .BinarySearch返回意外結果
它可能是某種保留的關鍵字? 我已經針對.Net Framworks 3.5,4.5.2和4.6編譯了相同的結果。
[TestMethod]
public void IssueWithBinarySearch() {
List<string> operators = new List<string>(new[] { "$eq", "$gt", "$gte", "$lt", "$lte", "$ne", "$in", "$nin" });
Assert.AreEqual(0, operators.BinarySearch("$eq"));
Assert.AreEqual(1, operators.BinarySearch("$gt"));
Assert.AreEqual(2, operators.BinarySearch("$gte"));
Assert.AreEqual(3, operators.BinarySearch("$lt"));
Assert.AreEqual(4, operators.BinarySearch("$lte"));
Assert.AreEqual(5, operators.BinarySearch("$ne"));
Assert.AreEqual(6, operators.BinarySearch("$in"));
Assert.AreEqual(7, operators.BinarySearch("$nin"));
}
謝謝,我再次檢查了文檔:列表必須已經根據比較器實現進行排序;否則,結果不正確。 –