当前位置:  编程技术>.net/c#/asp.net

C#泛型学习笔记

    来源: 互联网  发布时间:2014-08-30

    本文导语:  很多非泛型集合类都有对应的泛型集合类,最好还是养成用泛型集合类的好习惯,它不但性能上好而且功能上要比非泛型类更齐全。 以下是常用的非C#泛型集合类以及对应的泛型集合类: 非泛型集合类 泛型集合类 ArrayList List ...

很多非泛型集合类都有对应的泛型集合类,最好还是养成用泛型集合类的好习惯,它不但性能上好而且功能上要比非泛型类更齐全。

以下是常用的非C#泛型集合类以及对应的泛型集合类:
非泛型集合类 泛型集合类
ArrayList List
HashTable DIctionary
Queue Queue
Stack Stack
SortedList SortedList

在1.1(C#2003中)用的比较多的集合类(非泛型集合)主要有  ArrayList类 和 HashTable类。后来2.0(C#2005中)增加了泛型功能,请通过下列代码段来理解泛型的优点:
 

代码示例:
//c#1.1版本(NET2003)
System.Collections.ArrayList arrList = new System.Collections.ArrayList();
arrList.Add(2);//int ArrayList.Add(object value)
arrList.Add("this is a test!");//int ArrayList.Add(object value)
arrList.Add(DateTime.Now);//int ArrayList.Add(object value)
int result;
for (int i = 0; i < arrList.Count; i++)
{
result += int.Parse(arrList[i].ToString());//发生InvalidCastException异常
}
/*将光标放到Add方法上时,显示“int ArrayList.Add(object value)”,表明参数需要OBJECT类型的;
*ArrayList虽然可以操作任何类型(int,string,datetime)的数据,但是,在添加时它们都需要被强制装箱成object,在读取时还要强制拆箱,
* 装拆箱的操作,对于几百条以上的大量数据来说对性能影响极大。
*/
 
//c#2.0版本(NET2005)
System.Collections.Generic.List arrListInt = new List();
arrListInt.Add(2);//void List.Add(int item)
 
System.Collections.Generic.List arrListString = new List();
arrListString.Add("this is a test!");//void List.Add(string item)
int result;
for (int i = 0; i < arrListInt.Count; i++)
{
result += arrListInt[i];
}
 
System.Collections.Generic.List arrListDateTime = new List();
arrListDateTime.Add(DateTime.Now);//void List.Add(DateTime item)
/*将光标放到Add方法上时,可以看出所需参数类型恰好是用户提供的*/
 

 
说明:
对于客户端代码,与ArrayList 相比,使用List (T) 时添加的唯一语法是声明和实例化中的类型参数。
虽然这种方式稍微增加了编码的复杂性,但好处是可以创建一个比ArrayList 更安全并且速度更快的列表。

另外,假设想存储某种特定类型的数据(例如Int型),如果使用ArrayList,将用户添加的所有类型的数据都强制转换成object类型,导致编译器也无法识别,只有当运行时才能发现错误;而泛型集合List则在编译时就会及时发现错误。

希望以上的介绍,对大家有所帮助。


    
 
 

您可能感兴趣的文章:

  • C#学习笔记之C#的虚方法
  • C#学习笔记之C#中的类
  • C#学习笔记之C#类的初始化
  • C#.NET学习笔记5 C#中的条件编译
  • C#学习笔记之C#接口的索引器
  • C#学习笔记之C#只读字段
  • C# 全局变量的学习小结
  • c# 常量与字段学习
  • C#学习笔记之抽象类和抽象函数
  • c# MD5加密的代码(简单示例,仅供学习参考)
  • C# 泛型数组学习小结
  • C#学习笔记之C#结构
  • 实例学习C#中Ref,Out的用法
  • C#学习笔记之扩展方法
  • C#学习笔记之继承
  • C#类的学习笔记之C#构造函数
  • c#进度条ProgressBar学习笔记
  • C# 泛型数组实例学习与总结
  • 实例学习C#中is与As运算符号的用法
  • c# 类型构造器学习
  • 学习linux是用PC好还是笔记本好?
  • Oracle 10G进程体系学习笔记
  • Linux 下 Oracle 命令学习笔记
  • 版本控制ClearCase,求ClearCase的学习笔记。在线等待!分不够另开贴再加。
  • jQuery学习笔记之toArray()
  • Linux+Oracle学习笔记
  • SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER
  • MySQL定时器EVENT学习笔记
  • 哪位有西陆"Java初学者"论坛版主chairyuan的学习笔记,现在那里DOWN不了,拜托哪位发一份给我,谢谢:) myjava@263.net
  • Python学习笔记_数据排序方法
  • 设计模式---学习笔记2
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 学习java好 还是学习嵌入式开发好??
  • 学习linux网络编程需要学习些内核知识吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 博客 iis7站长之家
  • 请问学习JAVABEANS是不是就是学习java.beans.*类库??
  • 谁有 电子版 mastering ejb 2e 多谢!!及学习EJB 集合什么实例学习比较快一点?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • 你们学习Linux是学习什么的?
  • 我想问一个大家,我现在刚学习LINUX,我想问一下在LINUX学习哪些知识有前途???
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3