首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载  ┆ 端午节祝福 
设为首页
加入收藏
联系我们
热门关键字: .net应用  操作系统  Dreamweaver  WinRAR  网络推广
高级搜索
您当前的位置: 主页>NET专区>C#语言>C#泛型学习笔记总结
C#泛型学习笔记总结
来源: 发布时间:2008-06-29 发布人: 浏览: 人次   字体: [ ]  

泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用在集合和在集合上运行的方法中。.NET Framework 2.0 版类库提供一个新的命名空间 System.Collections.Generic,其中包含几个新的基于泛型的集合类。建议面向 2.0 版的所有应用程序都使用新的泛型集合类,而不要使用旧的非泛型集合类,如 ArrayList。有关更多信息,请参见 .NET Framework 类库中的泛型(C# 编程指南)。

当然,也可以创建自定义泛型类型和方法,以提供自己的通用解决方案,设计类型安全的高效模式。下面的代码示例演示一个用于演示用途的简单泛型链接列表类。(大多数情况下,建议使用 .NET Framework 类库提供的 List<T> 类,而不要自行创建类。)在通常使用具体类型来指示列表中所存储项的类型时,可使用类型参数 T。其使用方法如下:

在 AddHead 方法中作为方法参数的类型。

在 Node 嵌套类中作为公共方法 GetNext 和 Data 属性的返回类型。

在嵌套类中作为私有成员数据的类型。

注意,T 可用于 Node 嵌套类。如果使用具体类型实例化 GenericList<T>(例如,作为 GenericList<int>),则所有的 T 都将被替换为 int。

 1// type parameter T in angle brackets
 2public class GenericList<T> 
 3
{
 4    // The nested class is also generic on T

 5    private class Node
 6    
{
 7        // T used in non-generic constructor

 8        public Node(T t)
 9        
{
10            next = null
;
11            data =
 t;
12        }

13
14        private
 Node next;
15        public
 Node Next
16        
{
17            get return next; }

18            set { next = value; }
19        }

20        
21        // T as private member data type

22        private T data;
23

24        // T as return type of property

25        public T Data  
26        
{
27            get return data; }

28            set { data = value; }
29        }

30    }

31
32    private
 Node head;
33
    
34    // constructor

35    public GenericList() 
36    
{
37        head = null
;
38    }

39
40    // T as method parameter type:

41    public void AddHead(T t) 
42    
{
43        Node n = new
 Node(t);
44        n.Next =
 head;
45        head =
 n;
46    }

47
48    public IEnumerator<T>
 GetEnumerator()
49    
{
50        Node current =
 head;
51

52        while (current != null
)
53        
{
54            yield return
 current.Data;
55            current =
 current.Next;
56        }

57    }

58}

59
60

下面的代码示例演示客户端代码如何使用泛型 GenericList<T> 类来创建整数列表。只需更改类型参数,即可方便地修改下面的代码示例,创建字符串或任何其他自定义类型的列表:

 1class TestGenericList
 2
{
 3    static void
 Main()
 4    
{
 5        // int is the type argument

 6        GenericList<int> list = new GenericList<int>();
 7

 8        for (int x = 0; x < 10; x++
)
 9        
{
10
            list.AddHead(x);
11        }

12
13        foreach (int i in
 list)
14        
{
15            System.Console.Write(i + " "
);
16        }

17        System.Console.WriteLine("\nDone");
18    }

19}

20
21

共2页: 上一页 1 [2] 下一页
↓下一篇:没有了
相 关 文 章   发布商链接
·C#向Excel报表中插入图片的2种方法
·提供一个基于.NET的加密/解密算法
·在.NET中产生随机密码字符串
·用C#实现查询IP所在区段的功能
·实例解释C#中Dispose和Close的区别
·C#区别和认识四个判等函数
·c#中的ArrayList属性祥解及其语法...
·C#中关于四舍五入函数的讨论及其解...
·使用C#编写查询IP段功能的程序
·关于C#在lucene.net下的中文切词
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·c#语言从dbf数据库提取数据并
·C#编写控制线程的运行和线程...
·怎样在C#中删除只读文件及其...
·C#函数中返回多个值的两种方...
·如何在C#中插入照片到Excel文
·如何在c#中获取事件注册的方...
·C#对timer类的使用操作代码
·什么是泛型?泛型的一些概述
·C#如何从文本文件读取信息并...
·如何在c#中去掉字符串中的回...
·如何使用C#获取IIS服务器版本...
·什么是泛型编程思想?及其简...
·c#子线程控制进度条的一个简...
·C#如何获取文件路径中的文件...
·c#访问修饰符介绍及其应用实...
热 门 文 章
·c#中收发邮件处理代码(POP3,...
·C#中关于四舍五入函数的讨论...
·c#中的ArrayList属性祥解及其...
·快速进行List排序的通用方法...
·String.Split 方法使用及其代...
·C#如何获取文件路径中的文件...
·什么是c#深拷贝与浅拷贝及其...
·用C#操作类读写WinCE平台Mac...
·asp.net打造进度条窗口代码,...
·初学者参考C#中操作XML修改完...
·谈谈对C#委托的理解,附代码实...
·用C#编写ActiveX控件代码实例
·浅谈C#对象深拷贝、浅铐贝、...
·C#获取IE临时文件夹中的文件...
·如何在c#中去掉字符串中的回...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .