C#數組的筆記

Array.Copy的筆記:數組

一、將值類型的元素裝箱位引用類型的元素,好比講一個Int32[]的元素複製到Object[]中安全

二、將引用類型的元素拆箱爲值類型的元素性能

三、加寬CLR基元值類型,好比講一個Int32[]的元素複製到一個Double[]中。spa

四、在兩個數組之間複製是,若是僅從數組類型證實不了二者的兼容性,好比從Object[]轉型爲IFormattable[],根據須要對元素進行向下類型轉換。若是Object[]中的每個對象都實現了IFormattable,Copy方法就能成功執行。code

若是隻是須要把數組中的某些元素複製到另外一個數組,能夠選擇System.Buffer的BlockCopy方法,它的執行速度比Array的Copy方法快。orm

全部數組都隱式派生自System.Array。對象

全部數組痘印是實現IEnumerable,Icollection和IList:由於這些接口將全部元素都視爲System.Object,然而,最好是讓System.Array都實現這些接口的泛型形式,提供更好的編譯時類型安全性和更好的性能。blog

不過,由於涉及多維數組和非0基數組的問題,CLR團隊不但願System.Array實現IEnumerable<T>,ICollection<T>和IList<T>。同時還會維數組類型的全部基類型實現這三個接口,只要他們是引用類型。一下層次結構圖對此進行了澄清:接口

Object
    Array
        Object[]
            Stream[]
               FileStream[]

因此,若是你執行如下代碼:io

FileStream[]fsArray

CLR建立FileStream[]類型時,會自動爲這個類型實現IEnumerable<Stream>,IEnumerable<Object>,ICollection<Object>,IList<Stream>和IList<Object>。

相關文章
相關標籤/搜索