C#2.0泛型--Dictionary,List用法

泛型是 C#2.0 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作.
使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。
泛型最常见的用途是创建集合类。
.NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList,HashTable等。
下面我们就来说下,几个泛型集合类的用法:

一.Dictionary 
此类在 .NET Framework 2.0 版中是新增的。表示键和值的集合。命名空间:System.Collections.Generic,程序集:mscorlib(在 mscorlib.dll 中)Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同,其它方法如:ContainsKey ,ContainsValue ,Remove 等,使用方法基本一致。

 1class TestGenericList
 2    {
 3         static void Main()
 4        {
 5 //声明对象,参数表示,键是int类型,值是string类型
 6            Dictionary<int, string> fruit = new Dictionary<int, string>();
 7            try{
 8             //加入重复键会引发异常
 9                fruit.Add(1, "苹果");
10                fruit.Add(2, "桔子");
11                fruit.Add(3, "香蕉");
12                fruit.Add(4, "菠萝");            
13  //参数错误将引发异常,如下所示
14  //fruit.Add("5", "aa");
15            }
16            catch (ArgumentException)
17            {
18                Console.WriteLine("添加错误!!!");
19            }
20 //因为引入了泛型,所以键取出后不需要进行Object到int的转换,值的集合也一样
21            foreach (int i in fruit.Keys)
22            {
23                Console.WriteLine("键是:{0}  值是:{1}",i,fruit);
24            }
25      //删除指定键,值
26            fruit.Remove(1);
27             //判断是否包含指定键
28            if (fruit.ContainsKey(1))
29            {
30                Console.WriteLine("包含此键");
31            }
32            //清除集合中所有对象
33            fruit.Clear();
34        }
35    }
36


二、List类
注意:此类在 .NET Framework 2.0 版中是新增的。表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。命名空间: System.Collections.Generic,程序集:mscorlib(在 mscorlib.dll 中),List 类是 ArrayList 类的泛型等效类。

 1    class TestGenericList
 2    {
 3        static void Main()
 4        {
 5            //声明一个List对象,只加入string参数
 6            List<string> names = new List<string>();
 7            names.Add("乔峰");
 8            names.Add("欧阳峰");
 9            names.Add("马蜂");
10            //遍历List
11            foreach (string name in names)
12            {
13                Console.WriteLine(name);
14            }
15            //向List中插入元素
16            names.Insert(2, "张三峰");
17            //移除指定元素
18            names.Remove("马蜂");           
19        }
20    }
21

   //声明一个泛型类  
在决定使用 List 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。

如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List 类的实现。这意味着不必对 List 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。

其实我们也可以自己定义一个泛型类,如下所示:

 1   //声明一个泛型类
 2    public class ItemList<T>
 3    {
 4        void Add(T item) { }
 5    }
 6    class TestGenericList
 7    {
 8        private class ExampleClass { }
 9        static void Main()
10        {
11            // 声明一个对象,只能加入int型
12            ItemList<int> list1 = new ItemList<int>();
13
14            //声明一个对象,只能加入Student类型,Student类为自定义类
15            ItemList<Student> list2 = new ItemList<Student>();
16
17        }
18    }


泛型的用法还有很多种,如泛型方法,泛型委托,泛型接口等。

转载于:https://www.cnblogs.com/diony/archive/2012/06/06/2537752.html

(转)C#2.0泛型--Dictionary,List用法相关推荐

  1. 泛型Dictionary的用法详解

    泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的 ...

  2. 【淘宝ERP】泛型Dictionary的用法详解

    泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的 ...

  3. C#2.0泛型-Dictionary,List的用法

    泛型最常见的用途是创建集合类. .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类.应尽可能地使用这些类来代替普通的类,如 S ...

  4. C#中Dictionary的用法

    在C#中,Dictionary提供快速的基于兼职的元素查找.他的结构是这样的:Dictionary<[key], [value]> ,当你有很多元素的时候可以使用它.它包含在System. ...

  5. c# hash 泛型_C# 泛型Dictionary (Hashtable)

    C# 泛型Dictionary (Hashtable)using System; using System.Collections.Generic; public class Example { pu ...

  6. .NET 2.0泛型集合类与.NET 1.1集合类的区别(一)

    本文旨在阐述.NET 2.0泛型集合类与.NET 1.1集合类在使用中的区别,而不是介绍泛型的优势或者使用.这篇文章假设你已经会简单使用泛型来编程. 本文章使用.NET 2.0的2.0.50215.4 ...

  7. .NET 2.0 泛型在实际开发中的一次小应用

    早闻.NET 2.0中泛型的大名,但一直未在实际开发中使用. 最近在开发博客园网站程序的过程中体验了一下. 应用场景:      在配置文件中通过反序列化读取相应的邮件设置. 配置文件示例: < ...

  8. shell中$0,$?,$!等的特殊用法

    shell中$0,$?,$!等的特殊用法 (2011-03-01 17:38:00) 转载▼ 标签: it   变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行 ...

  9. 1---结构体中最后一个成员为[0]长度数组的用法

     结构体中最后一个成员为[0]长度数组的用法 2012-04-27 16:03:58 分类: C/C++ 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:  1.不需要初始 ...

最新文章

  1. python3 集合(set)
  2. hive遇到FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误...
  3. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - F. 牌型种数
  4. JAVA的IO编程:管道流
  5. 原生及jq方式使用ajax
  6. Bootloader传参数到Kernel
  7. 逍遥自动秒收录导航网源码绿色版+全站SEO优化
  8. 百面机器学习第一章——特征工程(基本是百面机器学习书的内容)
  9. linux 路由协议,路由协议之RIP协议
  10. 电子商务网站建设策划书_网站建设及推广的5大注意事项
  11. Windows 7有用的20条新功能及技巧
  12. 为Eureka Server添加用户认证
  13. 使用工具Android Studio实现一个简单的Android版的新闻APP之美
  14. 什么是计算机文化它与计算机技术有何区别,什么叫计算机文化?
  15. 最新计算机java毕业设计题目选题推荐2023
  16. Science 李伟/周琪团队联合开发染色体编辑新技术,创建全新核型小鼠,哺乳动物染色体尺度基因组重塑元年...
  17. 怎么查询逆水寒服务器角色信息,逆水寒服务器状态
  18. 清除系统垃圾脚本 windows
  19. layui 上传图片 返回图片地址
  20. 蓝桥杯 结果填空 猜生日

热门文章

  1. 【Get 以太坊技能】CentOS 7 安装 go
  2. ORACLE查询表数据占用存储空间大小
  3. 魅族Android10内测招募答案,10款机型升级Android 10!魅族Flyme即日起内测招募
  4. oracle临时表读,Oracle之临时表详细解读
  5. 找不到匹配的key exchange算法_目标检测--匹配策略
  6. 参数控制c语言代码走向,C语言可变参数完全解读
  7. 计算机知识和技能,计算机基本知识和技能PPT课件.ppt
  8. mysql子查询存到另一张表_MySQL多表查询与子查询
  9. centos7建站php_搭建centos7 的php环境
  10. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...