当Array.BinarySearch表示具有负索引的数组时,它意味着什么?

Ala*_*lan 4 .net c# arrays

Array.BinarySearch.NET中的文档说它不适用于具有负索引的数组.据我所知,.NET只有具有正索引的数组,并且不允许继承该System.Array类型.

为什么文档说明了这一点以及它是如何实现的?

此方法不支持搜索包含负索引的数组.必须在调用此方法之前对数组进行排序.

das*_*ght 5

您可以创建一个数组,使您可以为数组提供负索引:

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)

在ideone上演示.

您也可以使用单个维创建一个数组,但int[]由于CLR对一维数组使用特殊类型,因此无法将其转换为.但是,您可以通过ArrayAPI 将此类数组与负索引一起使用.文档说您不允许将此类数组传递给该BinarySearch方法.