数组的传递与返回
如果我们定义了一个返回数组引用的方法,而在某些情况下数组又不含任何元素,那么我们的方法即可返回一个null,也可返回一个长度为0的数组引用。当我们实现这样的方法时,微软强烈建议我们让该方法返回一个0长的数组,因为这样会简化调用该方法的开发人员的编码工作。
同理,我们应该以同样的方式来处理字段。
创建下限非0的数组
使用Array.CreateInstance静态方法可以动态创建下限非0的数组。
示例代码:
可使用Array.GetLowerBound和Array.GetUpperBound方法来获取此类数组的上下限索引号,以方便编码。
快速访问数组
我们每次访问一个数组中的元素时,CLR都会确保索引不会超出数组的上下限。CLR的索引检查会有一些性能方面的代价。如果大家对自己的代码有足够的信心,并且不介意使用非安全代码,则可在访问一个数组时不让CLR执行索引检查。
示例代码如下:
unsafe static void main()
{
Int32[] arr = new Int32{1, 2, 3, 4, 5};
//获取一个指向数组第0元素的指针
fixed(Int32 * element = &arr[0])
{
for(Int32 x = 0, n = arr.Length; x < n; x++)
{
Console.WriteLine(element[x]);
}
}
}
非安全数组操作只可用于元素为以下类型的数组:SByte、Byte、Int16、UInt16、Int32、UInt32、Int63、UInt64、Char、Single、Double、Decimal、Boolean、枚举类型,或字段为上面所述类型的结构类型。
浙公网安备 33010602011771号