泛型概念
假設有一類別為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)
沒有留言:
張貼留言