本次課我們要學習數組的屬性、foreach的用法、我上節課提到的交錯數組,我會通過多個例子的演示講解讓你們理解交錯數組定義已經與 規則的二維數組(矩形數組)的區別加深理解,下一節我們還將學習數組的常用方法。
下面我們來學習一下數組的屬性,什麼是屬性呢?在 以後學習類的時候我會給大家詳細的講解,現在我給你們舉個現實生活的例子,幫助你們理解什麼叫屬性,屬性一般都是名詞,表示它的所有 者(即對象)擁有的特性,如抹布(對象)的顏色、大小(屬性),而下一節將學習的數組的方法一般是動詞,如抹布的功能,抹布(對象) 清除(方法)桌面、車輛、地面(這些動作的賓語也可以比喻成以後要學習的參數),現在你們就記住屬性是描述對象的特性的,一般是名詞 ,方法是描述對象功能的,一般是動詞。那數組有哪些屬性呢?
數組的屬性:Array.Length數組的容量
利用這個屬性,我們可 以取得數組對象允許存儲的容量值,也就是數組的長度、元素個數,這個比較好理解,數組還有其他的屬性,比如數組的維數等,屬性的用法比 較簡單,學會一種,其他的格式基本一致,這裡我們就不舉例了。
在上一節最後一個例子時我們用到了通過索引(index)得到數組元素 的值Array[index],但是當數組的維數、容量較多時,采用索引這種方法就會繁雜,不僅代碼量大也會降低編程效率,針對這個問題C#提供了 foreach語句,專門用來讀取集合/數組中的所有元素,我們把這種功能叫做遍歷。語法書寫如下:
遍歷數組:foreach(type objName in collection/Array)
這段語句會逐一檢查數組中的所存儲的變量值,並且一一將其取出,其中的type是你所要讀取的數組對象將要 存儲在objName變量的數據類型,而objName是定義了一個type類型的變量名,代表每一次從集合和數組(collection/Array)中取得的元素, collection/Array則是所要存取的數組對象。用這種方法只需寫一個foreach就可以遍歷出除交錯數組以外的所有維數的數組。
注: objName的數據類型type必須與collection/Array對象的類型相同或比它大。
下面我們舉一個用foreach和for遍歷規則數組的例子,其 中涉及到了一個數組得到維數的方法,比較foreach在一次性遍歷規則數組上的優勢。
int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定義一個2行2列2縱深的3維數組a
for (int i = 0; i < a.GetLength (0) ;i++ ) //用 Array.GetLength(n)得到數組[0,1,,,n]上的維數的元素數,0代表行,1列,n代表此數組是n+1維
{
for (int j = 0; j < a.GetLength(1); j++)
{
for (int z = 0; z< a.GetLength(2);z++ )//2代表得到縱深上的元素數,如果數組有n維就得寫n個 for循環
{
Console.WriteLine(a[i,j,z]);
}
}
}