湖南响应式官网建设哪家好,做搜狗网站优化点击软,十大效果图网站,wordpress theme 修改所谓泛型是指将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。一种类型占位符#xff0c;或称之为类型参数。我们知道一个方法中#xff0c;一个变量的值可以作为参数#xff0c;但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这…所谓泛型是指将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。一种类型占位符或称之为类型参数。我们知道一个方法中一个变量的值可以作为参数但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这个类型参数是什么。在.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 ProcessDataT(T i){} //T是int ,string,decimal,double这些数据类型的指代 用户在调用的时候便成了这样 ProcessDatastring(abc); ProcessDataint(123); ProcessDatadouble(12.23); 这与通常的那些定义的最大区别是方法的定义实现过程只有一个。但是它具有处理不同的数据类型数据的能力。 C# 2.0中有如List等泛型对象都具有此特性。 具有泛型机制的软件开发平台及语言 .Net 平台 2.0及以上版本 JAVA 5及以上版本 泛型的好处 泛型是c#2.0的一个新增加的特性它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。它允许程序员将一个实际的数据类型的规约延迟至泛型的实例被创建时才确定。泛型为开发者提供了一种高性能的编程方式能够提高代码的重用性并允许开发者编写非常优雅的解决方案。数据层public Listlibs.Model.Artitle GetAllArt() { Listlibs.Model.Artitle list new ListArtitle(); 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); } } catch (Exception ex) { throw new Exception(ex.Message); } finally { conn.Close(); } return list; }逻辑层 public ListArtitle GettitleAll() { return new libs.DAL.ArtileAccess().GetAllArt(); }web层调用 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.GetallArt(); } } public void GetallArt() { libs.Log.Artitless atrlesst new libs.Log.Artitless(); this.Repeater1.DataSource atrlesst.GettitleAll(); //或者直接调用数据库层 //this.Repeater1.DataSource new libs.DAL.ArtileAccess().GetAllArt(); this.Repeater1.DataBind(); }泛型较为广泛地被讨论这里写到的只是作为新手的入门级认识。泛型最常应用于集合类。泛型的一个显而易见的优点在于可以在许多操作中避免强制转换或装箱操作的成本或风险拿ArrayList这个集合类来说为了达到其通用性集合元素都将向上转换为object类型对于值类型更是有装箱拆箱的成本static void Main(string[] args){ArrayList al new ArrayList();al.Add(1);}在IL中是IL_0008: ldc.i4.1IL_0009: box [mscorlib]System.Int32IL_000e: callvirt instance int32 [mscorlib]System.Collections.ArrayList::Add(object)box操作就是装箱具体过程是把值类型从栈中弹出放入堆中同时把在堆中的地址压入到栈中频繁出现这样的操作成本比较大。所以在2.0中遇到以上的应用应该使用泛型集合类ListTstatic void Main(string[] args){ Listint l new Listint(); l.Add(1);}另一个比较常用的泛型集合类是DictionaryT,T用于保存键值对static void Main(string[] args){ Dictionaryint, string dict new Dictionaryint, string(); dict.Add(1, SomeBook1); dict.Add(2, SomeBook2); dict.Add(3, SomeBook3); Console.WriteLine(dict[2]);//output:SomeBook2 dict[2] SomeCD1;//modify Console.WriteLine(dict[2]);//output:SomeCD1 dict.Remove(2);//delete foreach (KeyValuePairint, string kv in dict) { Console.WriteLine(Key {0}, Value {1},kv.Key, kv.Value); }}转载于:https://www.cnblogs.com/Nine4Cool/p/4249159.html