零基,即: zero-based, 最小索引为0
CLR对一维零基数组使用了特殊的IL操作指令newarr,
在访问数组时不需要通过索引减去偏移量来完成,
而且JIT也只需执行一次范围检查,
可以大大提升访问性能。
看来同样是数组,地位还很不一样:
关于接口转换的总结如下:
[1]一维零基数组
可(隐式)转成接口
Ilist上三函调用情况:
//未处理的异常: System.NotSupportedException: 集合的大小是固定的。
//在 System.SZArrayHelper.Xxx[T](...)
[2]一维非零基数组
可(显式)转成接口
Ilist上三函调用情况:
//未处理的异常: System.InvalidCastException:
//无法将类型为“System.String[*]”的对象强制转换为
//类型“System.Collections.Generic.IEnumerable`1[System.String]”。
[3]非一维数组(交差数组没测,有兴趣的朋友可以试一下)
不可转成接口
当然也不存在三函调用情况