文章目錄
- 1. List<T>
- 2. Dictionary<TKey, TValue>
命名空間:using System.Collections.Generic;
普通數組:在聲明時必須制定數組的長度和資料類型;ArrayList:數組元素資料類型和長度不受限制,但效率稍微低些;泛型:類似於數組功能,其長度不受限制,資料類型在聲明時必須指定。
C#中預定義了集中常用的泛型類,如:List<T>、Dictionary<TKey, TValue>、Queue<T>等等
1. List<T>
文法:List<類型> 變數 = new List<類型>();List<類型> 變數 = new List<類型> { XXX, XXX, XXX};// 聲明並初始化
樣本1:簡單實用:聲明、初始化、賦值、讀取等操作。在下例中可以看出,變數list1可以任意的添加元素,長度不受限制。
// 聲明方式1List list1 = new List();list1.Add(211);list1.Add(985);// 聲明方式2List list2 = new List { 211, 985 };list2.Add(136);for (int i = 0; i < list2.Count; i++){ Console.Write(list2[i].ToString());}2. Dictionary<TKey, TValue>
上例中泛型變數list1中儲存的元素是Int類型的變數,而在實際的應用當中往往要比這更加複雜。Dictionary<Tkey, TValue>泛型類為C#預定義的泛型類,它所儲存的每個元素由一對{key:value}兩個變數組成。
- 每個元素可以理解為一行記錄,Key為主鍵,必須唯一,可以為Int、String等類型。
- Value項可以為任意類型,可以是Int、String、數組等,也可以是執行個體化的對象。
① 簡單使用
class Program{ static void Main(string[] args) { // 執行個體化三個User對象 User user1 = new User("李寧", 21); User user2 = new User("耐克", 42); User user3 = new User("阿迪", 31); // 聲明Dictionary泛型變數users // Key的類型為Int;Value的類型為User Dictionary<int, User> users = new Dictionary<int, User>(); // 向users添加“元素”,“元素”的key不能重複 users.Add(2, user1); users.Add(3, user2); users.Add(5, user3); // 迴圈遍曆每個“元素” foreach (var p in users) { Console.Write(p.Key); Console.Write(p.Value.name); Console.Write(p.Value.age); } // 直接遍曆元素的Values foreach (User u in users.Values) { Console.Write(u.name); Console.Write(u.age); } }}// User類class User{ public string name; // 姓名 public int age; // 年齡 public User(string name, int age) { this.name = name; this.age = age; }}② 作為參數使用
class Program{ static void Main(string[] args) { User user1 = new User("李寧", 21); User user2 = new User("耐克", 42); User user3 = new User("阿迪", 31); Dictionary<int, User> users = new Dictionary<int, User>(); users.Add(2, user1); users.Add(3, user2); users.Add(5, user3); Program.show(users); // 將泛型變數作為函數參數使用 } // 注意參數類型的書寫格式 static void show(Dictionary<int, User> list) { foreach (var p in list) { Console.Write(p.Key); Console.Write(p.Value.name); Console.Write(p.Value.age); } }}class User{ public string name; // 姓名 public int age; // 年齡 public User(string name, int age) { this.name = name; this.age = age; }}