泛型概念
假設有一類別為Person, 有兩資料參數:名字和編號,實作的類別有employee和student, 名字型態為string這沒問題,在employee的編號為文字型態,student的編號為數字型態,這時就可以用泛型來表示編號,以下是整個程式碼:public class Person<T> { private string _name;// 名字 private T _no;//編號 public Person(string name, T no) //初始化Person { _name = name; _no = no; } public T getNo() //取得編號 { return _no; } } protected void Button2_Click(object sender, EventArgs e) { Person<int> student = new Person<int>("王小明", 98012); //宣告student類別 Person<string> employee = new Person<string>("王小明", "c001");//宣告employee類別 Response.Write(student.getNo() + "<br>" + employee.getNo());//印出student,employee編號 }
傳入泛型,在類別可以使用在一個以上的變數。
public class Person<T> { vate string _name;// 名字 private T _no;//編號 private T _no2;//編號2 … } protected void Button2_Click(object sender, EventArgs e) { Person<int> student = new Person<int>("王小明", 98012); }
也可傳入多個泛型。
public class Person<T,P> { vate string _name;// 名字 private T _no;//編號 private P_no2;//編號2 ... } protected void Button2_Click(object sender, EventArgs e) { Person<int,string> student = new Person<int,string>("王小明", 98012,”0921888111”); }
LIST泛型
list支援泛型,寫法:List<yourCls>,yourCls是要存在List的資料類別public class Car { private string _Make; //製造商 private string _Year; //年分 public Car(string m, string y) { Make = m; Year = y; } public string Make { get { return _Make; } set { _Make = value; } } public string Year { get { return _Year; } set { _Year = value; } } } protected void Button1_Click(object sender, EventArgs e) { List<Car> carList = new List<Car>(); //宣告泛型類別 carList.Add(new Car("Ford", "1995")); //加入car類別實體到List carList.Add(new Car("BMW", "1997")); carList.Add(new Car("Benz", "1999")); carList.Add(new Car("Toyota", "2001")); carList.Add(new Car("Luxgen", "2003")); foreach (Car c in carList) //顯示list裡的car資料 { Response.Write(c.Make + ", " + c.Year + "<br/>"); } }
參考:
泛型 (C# 程式設計手冊)
[C#] 泛型的意義 (Generics)
沒有留言:
張貼留言