读详谈泛型

1,什么是泛型?
答:泛型是类型的模板,类型是实例(对象)的模板。C#提供了5种泛型:类,接口,委托,结构和方法。

2,使用泛型有什么好处?
答:继承实现的是"代码重用",而泛型实现的是另一种形式的代码重用,即"算法重用"。总结起来有以下优点:
1> 提高代码的可重用性。
2> 编译时的类型安全性。当使用一个不兼容的类型的时候,会在编译时就报错,而不用等到运行时再报错,提高了类型安全性。
3> 更佳的性能。当操作值类型实例的时候,使用泛型会减少值类型的装箱,这样在程序的托管堆上内存分配更少,垃圾回收也没那么频繁,从而能提高程序的性能。

使用泛型类实例

下面是一个使用泛型来实现栈的实例,Main方法定义了两个变量,stackInt和stackString。使用int和string作为类型实参来创建这两个构造类型的实例(对象)。代码如下:

                      T[] StackArray;          
                                                                                                
                                         StackArray[StackPointer++] =   
                         
                       StackArray=  
                       ; i >= ; i--                  Console.WriteLine(    
                                           
             stackInt.Push();             stackInt.Push(             stackInt.Push(  
             stackString.Push(             stackString.Push(  
  
   }

程序输出结果为:

读详谈泛型

更多相关文章
  • Template的出现大大改变了C++的编程方式,甚至在传统的面向对象编程方式的基础上派生出了泛型编程方式.简单的理解泛型,可以看成是以平行级别的类(相对于继承来说)对代码依照算法逻辑进行复用.比如有一个template <class Type> A.当你分别使用A<int> ...
  • .NET泛型解析(上)
    [1]:泛型介绍泛型是C#2.0中一个重要的新特性,泛型是CLR和编程语言提供的一种特殊机制,它支持另一种形式的代码重用.泛型诞生之前:C#是一种强类型的语言,在没有泛型没有被提出之前,我们在使用集合的代码的时候,每次对其进行转换都需要隐式的强制转换,我们都知道所有对象的最终基类是object,我们 ...
  • 容器使用的12条军规--<Effective+STL中文版>试读还记的自己早年在学校学习c++的时候,老师根本就没有讲STL,导致了自己后来跟人说 起会C++的时候总是被鄙视,后来就下定决心一定要搞定STL.但是说实话,后来学了STL之后,我还是没有能够把它运用好,有的时候觉得STL太好 ...
  • 朋友也问过我,一些基础的东西学完了,如何进一步的成长,该学习哪些书呢?如果没有读过计算机专业的基础课程,那么计算机基础课程是一定要学习的.1.数据结构.离散数学.操作系统.编译原理这四门课学习完.数据结构和操作系统两门课程一定要细心学习,这个是基础理论.特别是数据结构,建议学习严蔚敏_吴伟民的< ...
  • 之前的博文中我们搭建了一个基本的开发环境,现在让我们给这个项目加上CRUD和基本的单元测试.1.创建泛型DAO的相关类在src\main\java\com\ceair\app\dao下创建GenericDao.java(APPFUSE2中的代码),代码内容如下:package com.ceair.a ...
  • #技术晨读# 浅谈Heatmap 怎么通过js,做打点,然后渲染出热点图,就和GA一样的那个玩意... http://huoding.com/2011/01/04/39 #技术晨读# Jquery插件库 刚开工,水一下,感觉很酷的jquey插件库 http://www.jq22.com/ #技术X读 ...
  • C++泛型算法
     <C++ Primer 4th>读书笔记 标准容器(the standard container)定义了很少的操作.标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛型算法:因为它们实现共同的操作,所以称之为“算法”:而“泛型”指的是它们可以操作在多种容器类型上— ...
  • 最近又熟悉了下go语言,发现go语言还有许多设计不好的地方,然后又读到了<我为什么放弃Go语言>这篇文章, 对于某些方面,我还是比较认同的.  这篇文章总结了十六点,如下: 1.1 不允许左花括号另起一行 1.2 编译器莫名其妙地给行尾加上分号 1.3 极度强调编译速度,不惜放弃本应提供 ...
一周排行
  • 1.Spark中Stage的提交 1.在复习内容中,将Job划分为Stage这一过程的调用起始于方法handleJobSubmitted,同样Stage的提交也包含在该方法中,如下所示: private[schedu ...
  • WindowsServer2008R2中关闭IE增强的安全配置
    当在Windows Sever 2008 R2中运动IE8的时候会发现默认情况下IE启用了 ...
  • 服务器IPMI设置/etc/init.d/ipmi startipmitool lan set 1 ipaddr 10.28.48.21ipmitool lan set 1 netmask 255.255.252.0 ...
  • 最近一直想学习华为交换机的配置,收集了一下命令,先进行一下整理,共大家学习参考!希望给给位博友有所帮助!!交换机命令 [Quidway]discur:显示当前配置 [Quidway]displaycurrent-co ...
  • 保存,需要使用.http://netsecurity.51cto.com/art/201405/439493.htmNmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security ...
  • 引用就是某一变量的一个别名,对引用的操作就是对目标的操作. 引用的声明方法: 类型标识符 &引用名=目标变量名: 如: 1 int a; 2 int &ra=a; //定义引用ra,他是变量a的引用, ...
  • ExchangeServer2010增加免责申明
             最近一直在想要在公司的邮件服务器中增加免责申明,以保证员工所有发出的邮件 ...
  • 本文内容涉及python中的os模块和os.path模块的常用操作,这两个模块提供了与平台和操作系统无关的文件系统访问方法.os模块负责大部分的文件系统操作,包括:删除文件.重命名文件.遍历目录树等:os.path模 ...
  • 经过重组.加速和全面转型,AMD已经脱胎换骨.一个全新的面向未来的AMD,将兼顾传统PC业务与新兴业务市场,以创新的技术.独到的眼光和强大的执行力,直面云计算时代的挑战. 8月14日,包括AMD总裁兼首席执行官Ror ...
  • 变量替换$variable 是 ${variable}的简写    39 hello="A B C D"    40 echo $hello # A B C D    41 echo " ...