在平常處理中,除了使用像「數值類型」和「字符串類型」外,還須要使用可以包含其餘對象的「集合」類型(請注意,這裏的集合對應英文是Collection,而非數學概念上的Set。)。大多數常見語言,都提供一些操做集合類型的語法。最基本的集合類型就是數組類型,它提供了一種下標基於0的數組對象。shell
首先經過幾個簡單的例子,來了解一下PowerShell中的數組是如何使用的。數組
PS C:/> 1,'a',2MB,0x100數據結構
1工具
a學習
2097152spa
256orm
上面的小例子輸出了4個對象:數值「1」、字符串「a」(注意:雖然只有一個字符,但這裏仍然是一個字符串)、數值「2MB」和十六進制數值「0x100」。也許您很想了解這個例子和數組究竟有什麼聯繫,實際上這個例子清楚地解釋了PowerShell中數組類型的語法。在PowerShell中,只要把不一樣的對象用逗號「,」鏈接起來,就能夠構造出數組對象。本章節的重點在於像你們介紹數組類型的使用,所以將在後續的章節詳細介紹逗號表達式「,」的使用。咱們回到剛纔的例子中,雖然這4個對象組成了PowerShell中的數組對象,可是若是沒有把這個對象存儲起來或者丟棄掉的話,PowerShell就會利用默認的格式器和輸出器將它們輸出到控制檯上。最終咱們就看到了上面四行輸出結果。對象
如今咱們知道了PowerShell中構造數組的最簡單的方式,接下來讓咱們一塊兒探索更多關於數組對象更多的特性:索引
PS C:/> $array1 = 1,2,3,4接口
PS C:/> $int = 1
PS C:/> $array1.count
4
PS C:/> "$array1"
1 2 3 4
PS C:/> $int.count
PS C:/> "$int"
1
細心的讀者確定已經發現,在第一個例子中,使用了逗號構造了一個包含四個整數的數組,並將其存儲在變量$array1中。接下來將數值1存儲在變量$int中。數組對象上有一個屬性Count用來指出當前數組中的對象數量,咱們能夠看到$array1中包含了4個對象。可是在$int上確沒有該屬性(注意:若是引用的屬性不存在,PowerShell返回$null對象,該對象不會對控制檯產生任何影響,只是簡單的使提示用戶繼續輸入命令)。
PowerShell是基於對象的shell,如今讓咱們來看看數組到底是什麼對象:
PS C:/> $array1.GetType().FullName
System.Object[]
在PowerShell中調用對象上的GetType()方法,能夠獲得該對象的類型對象(類型也是一個對象)。而該對象上的FullName屬性就是該對象表示的類型的名稱。這裏有點繞口令了,總之若是你想知道一個對象的類型就調用GetType()方法,再訪問FullName屬性就能夠了。
學會了建立數組以及知道了數組包含的對象數量,如今來學習一下如何訪問數組中的元素。實際上PowerShell的數組其實經過.Net類庫中的數組來實現的,也就是說PowerShell在.Net類庫原有的實現上,增長了一些PowerShell便捷的訪問接口,而實際操做的對象仍是.Net類庫中的對象。使用數組時,須要你們記住數組的第一個元素的下標是「0」、數組的最後一個元素下標是數組長度減去1。例如:
PS C:/> $array = 1,2,3
PS C:/> $array.Length
3
PS C:/> $array[0]
1
PS C:/> $array[2]
3
PS C:/> $array[4]
PS C:/>
實際上,Count是屬性Length的別名,這主要是爲不一樣對象提供一致性接口的技術。這裏須要特別注意的是,當數組訪問越界時,PowerShell是不會給出任何錯誤信息的,只會獲得一個$null對象。
若是咱們已經有一個數組了,應該如何向這個數組中添加新的元素呢?在Perl中,你只需簡單的使用你想使用的索引,而後存儲上你想存儲的數值就完成了任務。然而在PowerShell中,若是你使用相似的方法就會獲得以下的結果:
PS C:/> $a = "My ThinkPad", "My PC"
PS C:/> $a[0]
My ThinkPad
PS C:/> $a[1]
My PC
PS C:/> $a[2] = "My Mac"
數組賦值失敗,由於索引「2」超出範圍。
所在位置 行:1 字符: 4
+ $a[2 <<<< ] = "My Mac"
PowerShell的錯誤信息指出:索引越界。解決這個的辦法其實很簡單,只要使用下面的代碼就能夠巧妙解決:
PS C:/> $a = $a + "My Mac"
PS C:/> $a
My ThinkPad
My PC
My Mac
PS C:/> $a[2]
My Mac
在PowerShell中,數組實際上是一個大小固定的數據結構,若是須要向數組中添加更多的對象時,就必須使用加號「+」運算符。在執行「+」操做的過程當中,PowerShell實際上進行了下述操做:
1) 首先建立一個新的數組,該數組的大小可以存下運算結果的全部對象;
2) 將第一個數組的成員拷貝到新數組中;
3) 將第二個數組的成員拷貝到新數組中。
經過觀察這個操做過程,很容易發現:若是數組中包含元素不少,並且頻繁的向數組添加對象,必定會使PowerShell執行腳本時更慢。所以,咱們須要謹記:大多數時候,數組是PowerShell中的便捷的工具,可是應該避免頻繁地對其進行添加操做。在.Net類庫中提供了其餘的數據結構來知足須要常常向數組中添加對象的需求。