泛型

泛型作用

  • 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。

  • 泛型最常见的用途是创建集合类。

  • .NET Framework 类库在 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 命名空间中的 。

  • 您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。

  • 可以对泛型类进行约束以访问特定数据类型的方法。

  • 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。

    泛型是如何实现的?

    在.NET 2.0中,泛型在IL(中间语言)和CLR本身中具有本机支持
    编译泛型类时,就像编译其他类一样,泛型仅保留一个占位符
    而用特定类型实例化泛型代码,编译时会将泛型替换为实例化的特定类型.

    轻量级的结构中使用泛型
    public struct Point<T>
    {
      public T X;
      public T Y;
    }

    Point<int> point;
    point.X=1;
    point.Y=2;

    Point<double> point;
    point.X=1.2;
    point.Y=3.4;

    default关键字
    假设不希望在堆栈为空时引发异常,而是希望返回堆栈中存储的类型的默认值
    --值类型返回0(整型、枚举和结构)
    --引用类型返回null
    如果是基于object,则可以简单的返回null

    return default(T);

    单个类型可以定义多个泛型

    class Node<K,T>
    {
      public K Key;
      public T Item;
      public Node<K,T> NextNode;
      public Node()
      {
        Key = default(K);
        Item = defualt(T);
        NextNode = null;
      }
      public Node(K key,T item,Node<K,T> nextNode)
      {
        Key = key;
        Item = item;
        NextNode = nextNode;
      }
    }

    public class LinkedList<K,T>
    {
      Node<K,T> m_Head;
      public LinkedList()
      {
        m_Head = new Node<K,T>();
      }
      public void AddHead(K key,T item)
      {
        Node<K,T> newNode = new Node<K,T>(key,item,m_Head.NextNode);
        m_Head.NextNode = newNode;
      }
    }


    泛型别名
    在文件头部使用using为特定类型取别名
    别名作用范围是整个文件

    using List = LinkedList<int,string>;
    class ListClient
    {
      static void Main(string[] args)
      {
        List list = new List();
        list.AddHead(123,"AAA");
      }
    }

    更多参考MSDN:http://msdn.microsoft.com/zh-cn/library/ms379564(VS.80).aspx#


转载于:https://www.cnblogs.com/ycdx2001/archive/2009/03/27/1423390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值