为什么需要使用泛型类<T>

 使用泛型行的最大好处就是代码重用,合理的使用泛型可以大大的解决我们编写代码的数量,同时也可以提高我们的程序性能

下面我通过一个简单的例子讲解

   现在我们需要一个处理两个数据类型,int 类型和String的数据,他们都需要用到栈的操作,当我没没有泛型的时候需要写出两个栈

的数据结构

  2.1 处理int类型

复制代码

public class Stack

    {

        private int[] m_item;

        public int Pop(){...}

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

        public Stack(int i)

        {

            this.m_item = new int[i];

        }

}

复制代码

2.2处理字符串类型

复制代码

public class Stack

    {

        private string[] m_item;

        public string Pop(){...}

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

        public Stack(int i)

        {

            this.m_item = new string[i];

        }

}

复制代码

2.3当然我们也可以用object代替int 和string类型的

复制代码

public class Stack

    {

        private object[] m_item;

        public object Pop(){...}

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

        public Stack(int i)

        {

            this.m_item = new[i];

        }

      

    }

2.4上面这个栈可以处理任何数据类型的数据,应为object是所有类的基类。虽然这样写可以处理各种数据类型,但在其中存在这拆箱和装箱,如果数据太多会影响到程序的性能,
因此在c#2.0的时候泛型就此诞生了,他借鉴C++的模板为我们提供了泛型,在使用泛型的时候程序会在编译阶段根据我们提供的类型生成相应的二进制代码,无须进行装箱和拆箱

因此在上面的代码中我们可以使用泛型解决代码如下,这样我们也可以对于任何数据类型都可以使用这个栈了

复制代码

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];

        }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值