我爱Aspx >> Asp.Net >> C# 泛型简介需要注意的是,尽管约束是可选的,但它们在开发一般类型时通常是必不可少的。没有它们,编译器将采取更为保守的类型安全方法,并且只允许在一般类型参数中访问 Object 级别功能。约束是一般类型元数据的一部分,以便客户端编译器也可以利用它们。客户端编译器只允许客户端开发人员使用遵守这些约束的类型,从而实施类型安全。
以下示例将详细说明约束的需要和用法。假设您要向代码块 3 的链表中添加索引功能或按键搜索功能:
public class LinkedList { T Find(K key) {...} public T this[K key] { get{return Find(key);} } }
这使客户端可以编写以下代码:
LinkedList list = new LinkedList(); list.AddHead(123,"AAA"); list.AddHead(456,"BBB"); string item = list[456]; Debug.Assert(item == "BBB");
要实现搜索,您需要扫描列表,将每个节点的键与您要查找的键进行比较,并且返回键匹配的节点的项。问题在于,Find() 的以下实现无法编译:
T Find(K key) { Node current = m_Head; while(current.NextNode != null) { if(current.Key == key) //Will not compile break; else current = current.NextNode; } return current.Item; }
原因在于,编译器将拒绝编译以下行:
if(current.Key == key)
Ҷƪл˵?
《Effective C#》 翻译札记[05-20]
C#实现WEB服务器[05-20]
C#中时间差的计算[05-20]
C#四种Eval测试结果:不要用Code..[05-20]
通常C#面试题[05-20]
用C#与XML创建动态分层菜单[05-20]
C#数值结果表(格式化字符串)[05-20]
用浏览器来接收C# 的程序返回的时..[05-20]
使用C# 编写扩展存储过程[05-20]
C#正则表达式应用范例[05-20]
《Effective C#》 翻译札记[05-20]
Visual Studio 2005 新功能、新特..[05-20]
对mssql出现选定的用户拥有对象而..[05-20]
常用正则表达式[05-20]
将 Web 项目从 VS2002/2003 转换..[05-20]
Visual Studio 术语表[K-Z][05-20]
使用 Visual Studio 2005 Team S..[05-20]
常用CHM帮助文档集锦下载[2007-0..[05-20]
常用.NET工具下载(包括.NET可再发..[05-20]
怎么样察看经过编译过的代码exe或..[05-20]