Gab*_*abe 16
对于32位CLR,两者都有4个字节用于锁定,4个字节用于类型句柄,8个字节用于两个整数.但是,该数组将有额外的4个字节来存储长度(在本例中为2),因此该数组将具有4个字节的开销.
32位上的大小(由分析确定)
Tuple<int, int>:: 16字节
int[2]:20字节
int[1 to 2]*:28字节
int[2, 1]:36字节
在64位CLR上
Tuple<int, int>:: 24字节
int[2]:32字节
int[1 to 2]*:40字节
int[2, 1]:48字节
请注意,值类型的一维零基数组是可能的最小数组.使用引用类型为存储的对象类型添加另外4个字节(64位上为8个字节).使用非零数组基数或多维使其使用另一种存储排名和下限信息的数组类型,每个维度添加8个额外字节.
参考文献:
*你不能在C#中声明一个非0下限的数组,所以我编写了语法int[1 to 2].但是,您可以Array.CreateInstance(typeof(int), new[]{2}, new[]{10});在索引10和11处调用创建一个包含2个元素的数组.当然,由于此类数组不能直接在C#的类型系统中表示,因此它们不是非常有用,但它们提供了一个有趣的数据点.
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |