当前位置:首页 > C#教程 > C#高级

C#数组的笔记

array.copy的笔记:

1、将值类型的元素装箱位引用类型的元素,比如讲一个int32[]的元素复制到object[]中

2、将引用类型的元素拆箱为值类型的元素

3、加宽clr基元值类型,比如讲一个int32[]的元素复制到一个double[]中。

4、在两个数组之间复制是,如果仅从数组类型证明不了两者的兼容性,比如从object[]转型为iformattable[],根据需要对元素进行向下类型转换。如果object[]中的每一个对象都实现了iformattable,copy方法就能成功执行。

如果只是需要把数组中的某些元素复制到另一个数组,可以选择system.buffer的blockcopy方法,它的执行速度比array的copy方法快。

所有数组都隐式派生自system.array。

所有数组痘印是实现ienumerable,icollection和ilist:因为这些接口将所有元素都视为system.object,然而,最好是让system.array都实现这些接口的泛型形式,提供更好的编译时类型安全性和更好的性能。

不过,因为涉及多维数组和非0基数组的问题,clr团队不希望system.array实现ienumerable<t>,icollection<t>和ilist<t>。同时还会维数组类型的所有基类型实现这三个接口,只要他们是引用类型。一下层次结构图对此进行了澄清:

object
    array
        object[]
            stream[]
               filestream[]

所以,如果你执行以下代码:

filestream[]fsarray

clr创建filestream[]类型时,会自动为这个类型实现ienumerable<stream>,ienumerable<object>,icollection<object>,ilist<stream>和ilist<object>。


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!