码迷,mamicode.com
首页 > 其他好文 > 详细

泛型介绍

时间:2014-07-24 21:23:46      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:strong   数据   re   c   代码   new   c#   text   

值类型转换为引用类型 是装箱 ,存在堆上
引用类型转换为值类型 是拆箱 ,存在栈上

泛型用一个数据类型 T 来代替object,在类实例化时指定T的类型,运行时(Runtime)自动编译为本地代码,运行效率和代码质量都有很大提高,
并且保证数据类型安全。

public class Stack<T>

    {

        private T[] m_item;

        public T Pop(){...}

        public void Push(T item){...}

        public Stack(int i)

        {

            this.m_item = new T[i];

        }

}

实例化:

  Stack<int> a = new Stack<int>(100);

      a.Push(10);

      a.Push("8888"); //这一行编译不通过,因为类a只接收int类型的数据

      int x = a.Pop();

 

1. 他是类型安全的。实例化了int类型的栈,就不能处理string类型的数据,其他数据类型也一样。

2. 无需装箱和折箱。这个类在实例化时,按照所传入的数据类型生成本地代码,本地代码数据类型已确定,所以无需装箱和折箱。

3. 无需类型转换。

 

 

C#中数据类型有两大类:引用类型和值类型。引用类型如所有的类,值类型一般是语言的最基本类型,如int, long, struct等,在泛型的约束中,我们也可以大范围地限制类型T必须是引用类型或必须是值类型,分别对应的关键字是class和struct:

public class Node<T, V> where T : class

        where V: struct

泛型介绍,布布扣,bubuko.com

泛型介绍

标签:strong   数据   re   c   代码   new   c#   text   

原文地址:http://www.cnblogs.com/PeaCode/p/3865802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!