所謂泛型是指將型別參數化以達到代碼複用提高軟體開發工作效率的一種資料類型。
一種類型預留位置,或稱之為型別參數。我們知道一個方法中,一個變數的值可以作為參數,但其實這個變數的類型本身也可以作為參數。泛型允許我們在調用的時候再指定這個型別參數是什麼。在.net中,泛型能夠給我們帶來的兩個明顯好處是——型別安全和減少裝箱、拆箱。
例如:通常一個方法或過程的簽名都是有明確的資料類型的。
如 :
public void ProcessData(int i){}
public void ProcessData(string i){}
public void ProcessData(decimal i){}
public void ProcessData(double i){}
等。
這些方法的簽名中的:int ,string,decimal,double 都是明確的資料類型,程式員訪問這些方法的過程中需要提供提定類型的參數:
ProcessData(123);
ProcessData("abc");
ProcessData("12.12")
而如果我們將int ,string,decimal,double這些類型也當成一種參數傳給方法的時候方法的定義便是這樣:
public void ProcessData<T>(T i){} //T是int ,string,decimal,double這些資料類型的指代
使用者在調用的時候便成了這樣:
ProcessData<string>("abc");
ProcessData<int>(123);
ProcessData<double>(12.23);
這與通常的那些定義的最大區別是,方法的定義實現過程只有一個。但是它具有處理不同的資料類型資料的能力。
C# 2.0中有如List<>等泛型對象都具有此特性。
具有泛型機制的軟體開發平台及語言
.Net 平台 2.0及以上版本
JAVA 5及以上版本
泛型的好處:
泛型是c#2.0的一個新增加的特性,它為使用c#語言編寫物件導向程式增加了極大的效力和靈活性。它允許程式員將一個實際的資料類型的規約延遲至泛型的執行個體被建立時才確定。泛型為開發人員提供了一種高效能的編程方式,能夠提高代碼的重用性,並允許開發人員編寫非常優雅的解決方案。
資料層:
public List<libs.Model.Artitle> GetAllArt()
{
List<libs.Model.Artitle> list = new List<Artitle>();
string sqlconn = System.Configuration.ConfigurationSettings.AppSettings["sqlconn"];
SqlConnection conn = new SqlConnection(sqlconn);
string sqlstr = "select titleid,Title,author,company,Uploaddate,isVidate,conimages,content from writings order by titleid asc";
SqlCommand cmd = new SqlCommand (sqlstr,conn);
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
libs.Model.Artitle artles = new Artitle();
artles.Titleid = int.Parse(reader["titleid"].ToString());
artles.Title = reader["title"].ToString();
artles.Uploaddate = DateTime.Parse(reader["Uploaddate"].ToString());
list.Add(artles);