读详谈泛型

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 极度强调编译速度,不惜放弃本应提供 ...
一周排行
  • IDC评述网(idcps.com)12月10日报道:据WebHosting.info最新数据,截至12月2日,我国域名注册总量达到了7,230,243个,稳居全球第二名.而美国,域名注册总量为80,848,530个, ...
  • 原文地址第一课. git简介内容:什么是git,为什么要使用git以及获取和学习git的途径.  欢迎来到github学习教程的第一课.本教程将通过一系列的实例来介绍如快速,轻松地使用Git.教程中会有很多屏幕截图, ...
  • JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线 ...
  • <% 1.'UTF转GB---将UTF8编码文字转换为GB编码文字 function UTF2GB(UTFStr) for Dig=1 to len(UTFStr)     '如果UTF8编码文字以%开头则进行 ...
  • 1, 从http://www.mysql.com/downloads/上下载以下两个安装包:MySQL-server-5.5..linux2.6.x86_64.rpmMySQL-client-5.5..l ...
  • 什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度.awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道a ...
  • bash脚本之一变量+数组
    bash的变量与数组变量:存储单个元素的内存空间: 也相当于是数组的0号索引.数组:存储多 ...
  • 虚拟化:概念与优势         所谓虚拟化,是指将单台电脑环境分割为多个独立分区,每个分区均可以按照需要模拟一台电脑.         虚拟化分区带来的最大好处是使同一个物理平台能够同时运行多个同类或不同类的操作 ...
  • http://zhoujg.blog.51cto.com/1281471/520505 看书是获取知识的最佳途径之一,而读电子书更是我们IT人士的主要方式,在哪里可以获得自己需要的电子书呢?今天给大家推荐一些别人推荐 ...
  • 1.从oracle官网上下载最新版本的java,这里就不再贴出下载地址,请自行下载.2.将下载的压缩包文件(*.tar.gz)复制到/usr/local/java目录,为什么是这个目录(java是自己新建的目录)呢, ...