.net中数组的隐秘特性
背景知识
array类是所有数组类型的基类,上一篇文章《.net中string类的隐秘特性》中提到:数组的长度不是固定不变的,是可变的。
首先了解一些相关的概念:
数组元素:数组包含的值;
数组长度:数组可以包含的元素的个数;
维度数:数组的维度总数;
下限:数组指定的维度的起始索引。多维数组每个维可以有不同的下限。
运行时有两种不同的数组实现--sz数组和普通数组。sz数组是以0为下限的一维数组;普通数组指多维的或者下限不为0的数组。有时候我们称呼多维数组为md数组。由于sz数组较常用,微软对它的性能进行了极大的优化。下面的表详细列出了sz数组与md数组的区别。
| sz数组 | md数组 | |
| 定义 | 一维的,以0为下限的数组 | 多维的,或者下限不为0的数组 |
| c#语法 |
object[] object[][] (交错数组) |
object[,] ---二维数组 |
| 是否兼容cls | 兼容(交错数组除外) | 不兼容 |
| il优化 | 使用专用的il指令来操作这些数组,比如:ldlen,stelem
本文关键:数组 Array ArrayList .net
相关方案
|