首先登場的是Array,怎麼宣告Array?我們開頭就先說明Array可以放很多東西,所以宣告的時候,就要先說明裡面要放很多【什麼型態】的東西,還有要放幾個。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array_and_List { class Program { static void Main(string[] args) { string[] DayOfWeek = new string[7]; } } } |
上面我們宣告了一個要放很多個【string】的Array,變數名稱是【DayOfWeek】,這個Array總共要放【7】個【string】型態的東西。 我們把Array變數【DayOfWeek】宣告好了,接下來要怎麼用?我們來把Array裡面要放的東西放進去。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array_and_List { class Program { static void Main(string[] args) { string[] DayOfWeek = new string[7]; DayOfWeek[0] = "星期一"; DayOfWeek[1] = "星期二"; DayOfWeek[2] = "星期三"; DayOfWeek[3] = "星期四"; DayOfWeek[4] = "星期五"; DayOfWeek[5] = "星期六"; DayOfWeek[6] = "星期日"; } } } |
使用的方法就像上面的程式碼中看到的,變數名稱加上中括號[],中括號中的數字代表索引值,你就可以把資料放進你指定的位置。
上面的程式碼,指定【索引值0】的位置放入字串【星期一】,【索引值1】的位置放入字串【星期二】......直到【索引值6】的位置放入字串【星期日】。
當然,如果你一開始要宣告Array的時候就知道裡面要按照順序放什麼東西,你也可以這樣宣告。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array_and_List { class Program { static void Main(string[] args) { string[] DayOfWeek = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; } } } |
那List勒,List怎麼宣告?怎麼用?我們先把Array那部份打上【註解】,表示程式不執行該行,接著我們增加一些程式碼,由於List也是可以放很多東西,於是我們一樣要先說明要放進去的【變數型態】,跟Array不一樣的是,List不需要指定放入的個數。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array_and_List { class Program { static void Main(string[] args) { //string[] DayOfWeek = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; List<string> DayOfWeek = new List<string>(); } } } |
上面我們宣告了一個List變數,變數名稱【DayOfWeek】,接著我們來將資料放入List中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array_and_List { class Program { static void Main(string[] args) { //string[] DayOfWeek = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; List<string> DayOfWeek = new List<string>(); DayOfWeek.Add(null); DayOfWeek.Add(null); DayOfWeek.Add(null); DayOfWeek.Add(null); DayOfWeek.Add(null); DayOfWeek.Add(null); DayOfWeek.Add(null); DayOfWeek[0] = "星期一"; DayOfWeek[1] = "星期二"; DayOfWeek[2] = "星期三"; DayOfWeek[3] = "星期四"; DayOfWeek[4] = "星期五"; DayOfWeek[5] = "星期六"; DayOfWeek[6] = "星期日"; } } } |
我們看到上面的程式碼,List使用前必須要先透過【Add()】方式將資料加入List中,之後一樣可以透過變數名稱加中括弧[]與索引值來指定資料。
好了,看到這裡,你也許會有疑問,為什麼List要先加入東西之後才能用?其實是因為Array在宣告的時候,就自動幫你填入預設值,不需要你處理。
接著你就會開始疑惑,這兩個東西看起來差不多,到底差別在哪?
1、Array使用連續記憶體空間,List【不需要】使用連續記憶體空間。
連續記憶體空間是什麼意思?比方說你要蓋五棟房子,連續記憶體空間代表你要找一個塊夠大的地,可以讓你五棟房子都蓋在一起,在都市應該很難找,到鄉下比較有機會,不使用連續記憶體空間代表代表你只要找到五塊空地,就可以蓋五棟房子,並不要求一定要蓋在一起。
使用連續記憶體空間始有風險的,因為記憶體一直不斷的在存放資料刪除資料,記憶體空間看起來還不少,但很有可能都是零碎的記憶體空間,有時候在宣告比較大的Array的時候會失敗,因為連續記憶體空間不夠。
2、Array輪循速度比較快,List輪循速度比較慢。
以上面蓋房子的例子來說,Array要走過所有房子很快,因為都蓋在一起,但是List就不一樣了,因為房子不一定蓋在一起,所以要走過所有房子就要花比較多的時間。
3、Array無法新增或刪除其中的元素,List可以。
Array因為房子都蓋在一起,一開始就設計好了,沒辦法中間插進去一棟或者是敲掉其中一棟,再把其他棟移過來,但是List因為房子都沒有蓋在一起,所以要增加或減少房子都沒問題。
這邊只能簡單的介紹Array和List,其實他們各自都還有很多東西可以研究,比方說Atrray可以反轉,可以比較其中的元素是否相同......而今天介紹的List其實只是【集合】中的一員,這些之後都會陸陸續續出現,等不及的可以先到MSDN上查詢相關資料,有任何問題歡迎提出來討論,今天就到這了,改天見。
感謝你的付出!
回覆刪除後面五點總結真是精闢!謝謝了
回覆刪除對於我這新手很有幫助 感謝
回覆刪除Thank you
回覆刪除讚,一看就懂!
回覆刪除><
回覆刪除比喻非常易懂
回覆刪除感謝~很好理解
回覆刪除