泛型的概念

范型的基本优点在于好用,数组长度是动态的;安全,指定了T的类型;减少了开销,避免了以前ArrayList或Hashtable中将object类和具体类之间相互转换所带来的开销。
高一点的用法:范型提供了一种很好的复制手段,且提高了扩展性。例如,可以自己定义范型类,如ValidateObject<T>,用于校验对象,然后根据自己的需要,扩充校验对象类,而扩充的只是新对象的具体校验部分,而仍然可以使用这个校验抽象类,提高了扩展性,复用了代码。

这是目前我的理解,主要是在使用中学习的。
泛型的概念
(1)没有泛型的时候,所有的对象都是以object为基础,如果要使用时必须进行强制类型转换,如果对于值类型,则会导致不断拆箱装箱的过程,对系统消耗很大。
(2)使用泛型时不需要通过object类进行装箱拆箱,使用的时候都会是确定的类型。
(3)泛型的概念一开始是由集合引入,因为集合中的类型都是基于object类。可以在集合中使用泛型类。
(4)泛型不仅仅用于集合,还可以用于委托、接口和方法。
泛型的优点:高性能
ArrayList list1 = new ArrayList();
list1.Add(44); //装箱
int il1 = (int)list1[0];//拆箱
foreach (int i2 in list1)
Console.WriteLine(i2); //执行拆箱

频繁的拆箱、装箱操作在没有泛型的时候反复进行,对系统资源消耗很大。可以使用泛型集合。

List<int> list2 = new List<int>();
list2.Add(44); //不执行装箱
int il2 = list2[0];//不执行拆箱
foreach (int i2 in list2)
Console.WriteLine(i2); //不执行拆箱

泛型在定义的时候就区分了值类型和引用类型。

泛型的优点:类型安全
 ArrayList list = new ArrayList();
  list.Add(44);
  list.Add("mystring");
  list.Add(new MyClass());
  foreach (int i in list)
  Console.WriteLine(i);  

类型安全在于提前避免异常的出现。

List<int> list2 = new List<int>();
list2.Add(44);
 //list2.Add("mystring");
 //list2.Add(new MyClass());
直接编译不通过。


泛型的优点:代码的重用与扩展
List<T>这个泛型类在使用时可以根据需要用不同的类型实例化:

List<int> list=new List<int>();
list.Add(44);

List<string> stringList=new List<string>();
stringList.Add(“mystring”);

List<MyClass> myclassList=new List<MyClass>();
myClassList.Add(new MyClass());

泛型的优点:代码的重用与扩展

定义一个泛型类:
public class aaa<T> 注意:这里的T只是一个标识而已,定义成任何字符都可以。
  {
  public void abc(T a)
  {
  Console.WriteLine(a);
  }
  }

使用它:
  //使用string实例化
  aaa<string> aaa = new aaa<string>();
  aaa.abc("aaabbb");
  //使用int实例化
  aaa<object> bbb = new aaa<object>();
  bbb.abc(new object());
  Console.Read();
命名约定
(1)泛型类型的名称用字母T作为前缀。
(2)使用泛型时,使用<T>,如:
Public class List<T> {}
Public class Linkedlist<T>{}
(3)如果泛型类型有特定的要求(例如必须实现一个派生于基类的接口),或者使用了两个或多个泛型类型,就应给泛型类型使用描述性的名称:
比如:
 public interface ccc<TTT>
  { void abc(TTT arg1); }
 public class aaa<TTT>:ccc<TTT>
  { public void abc(TTT a)
  { Console.WriteLine(a); } }

Public class SortedList<TKey,Tvalue>{}

泛型集合
泛型集合存在于using System.Collections.Generic下.我们主要介绍如下List<T> ,其它的泛型集合使用请查阅MSDN。

==========================================================================

 

 

范型的基本优点在于好用,数组长度是动态的;安全,指定了T的类型;减少了开销,避免了以前ArrayList或Hashtable中将object类和具体类之间相互转换所带来的开销。
高一点的用法:范型提供了一种很好的复制手段,且提高了扩展性。例如,可以自己定义范型类,如ValidateObject <T>,用于校验对象,然后根据自己的需要,扩充校验对象类,而扩充的只是新对象的具体校验部分,而仍然可以使用这个校验抽象类,提高了扩展性,复用了代码…

=======================================================================

关于范型的使用,建议大家学习一下刚才一个兄弟发的代码:
在这段代码里,充分利用范型的模板功能,是一个完整的桥模式的应用。将操作者和操作对象解耦,操作者可以任意变化,操作对象也可以任意变化。

C# code
    
    
public class GenericFormatter < F > : IGenericFormatter where F : IFormatter, new () { IFormatter m_Formatter = new F(); /// <summary> /// Deserializes the specified serialization stream. /// </summary> /// <param name="serializationStream"> The serialization stream. </param> /// <returns></returns> public T Deserialize < T > (Stream serializationStream) { return (T)m_Formatter.Deserialize(serializationStream); } /// <summary> /// Serializes the specified serialization stream. /// </summary> /// <param name="serializationStream"> The serialization stream. </param> /// <param name="graph"> A parameter of the generics Type T </param> public void Serialize < T > (Stream serializationStream, T graph) { m_Formatter.Serialize(serializationStream, graph); } }
=========================================================
http://topic.csdn.net/u/20090611/14/182E8CCB-2577-4ACE-93AD-CB0C1FABD51E.html


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值