Array.BinarySearch.NET中的文档说它不适用于具有负索引的数组.据我所知,.NET只有具有正索引的数组,并且不允许继承该System.Array类型.
为什么文档说明了这一点以及它是如何实现的?
此方法不支持搜索包含负索引的数组.必须在调用此方法之前对数组进行排序.
您可以创建一个数组,使您可以为数组提供负索引:
var grid = (int[,])Array.CreateInstance(typeof(int),new[] {7,7}, new[] {-3,-3});
for (int r = -3 ; r <= 3 ; r++) {
for (int c = -3 ; c <= 3 ; c++) {
grid[r,c] = 10+r + c;
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用单个维创建一个数组,但int[]由于CLR对一维数组使用特殊类型,因此无法将其转换为.但是,您可以通过ArrayAPI 将此类数组与负索引一起使用.文档说您不允许将此类数组传递给该BinarySearch方法.