Eclipse开发平台 Eclipse集成开发环境 Java技术参考 J2EE企业应用项目 J2EE开发框架整合应用
Visual Studio 2008 技术 Visual Studio 2008集成环境 LINQ SQL Server 2008数据库 Silverlight WCF WPF WWF
平台综合 开发平台技术动态 跨平台开发 软件信息技术与商业 国外媒体技术资讯
程讯网下载 精品代码 — J2EE应用下载 精品代码 — ASP.NET应用 常用J2EE开发框架 流行ASP.NET开发框架

搜索
Google
 
最新文章
用自然的语言解说C#的泛型概念
 
SQL Server 2005 远程连接配置
 
SQL Server 2005远程连接配置注意事项
 
远程连接sql server 2000服务器的解决方案
 
SOA专业人员指南 第1部分 为何使用面向服务的架构?
 
走近Silverlight
 
如何学习微软的RIA技术——Silverlight
 
国外银行核心系统的效率问题
 
介绍SOA基本概念的文章推荐阅读
 
IBM 内部 SOA 应用案例研究
 
Jazz技术总体介绍的参考资料
 
Rational RequisitePro中需求管理的12个步骤详解
 
中文软件配置管理、变更管理等各种概念和方法的讲义
 
Rational Rose使用技巧讲义
 
WebSphere Application Server V6.0建立集群步骤总结
 
 
用自然的语言解说C#的泛型概念 - C#初级编程、.NET技术门外汉、基础性概念通俗理解
 
内容摘要 -


全文 -

用自然的语言解说C#的泛型概念


泛型
一、什么是泛型?
通过泛型可以定义类型安全类,而不会损害类型安全、性能或工作效率

二、实例化泛型
1、可以使用任何类型来声明和实例化
2、申明和实例话都必须用一个特定的类型来代替一般类型T
3、例子:
//原来写法
Public   class   Stack
{
object[]   m_Items;
public   void   Push(object   item)
{...}
public   object   Pop()
{...}
}
Stack   stack   =   new   Stack();
stack.Push(1);
int   number   =   (int)stack.Pop();

//有了泛型后
Public   class   Stack <T>
{
T[]   m_Items;
public   void   Push(T   item)
{...}
public   T   Pop()
{...}
}
Stack <int>   stack   =   new   Stack <int> ();
stack.Push(1);
int   number   =   (int)stack.Pop();

三:泛型的好处
1、一次性的开发、测试和部署代码,通过任何类型来重用它
2、编译器支持和类型安全
3、不会强行对值类型进行装箱和取消装箱,或者对引用类型进行向下强制类型转换,所以性能得到显著提高。
注:值类型大概可以提高200%,引用类型大概为100%

四:多个泛型
1、单个类型可以定义多个泛型

五:泛型别名
1、在文件头部使用using   为特定类型取别名,别名作用范围是整个文件
2、例子
using   List   =   LinkedList <int,string> ;
class   ListClient
{
static   void   Main(string[]   args)
{
List   list   =   new   List();
list.AddHead(123, "AAA ");
}
}

五:泛型约束
(1)、派生约束
如:
public   class   LinkedList <K,T>   where   K:IComparable
{
T   Find(K   key)
{
if   (str.Key.CompareTo(key)   ==   0)//只有实现这个接口才可比较
}
}

注意:
1、所有的派生约束必须放在类的实际派生列表之后
如:public   class   LinkedList <K,T> :IEnumerable <T>   where   K:IComparable <K>
        {...}
2、一个泛型参数上可以约束多个接口(用逗号分隔)
public   class   LinkedList <K,T>   where   K:IComparable <K> ,IConvertible
3、在一个约束中最多只能使用一个基类
4、约束的基类不能是密封类或静态类
5、不能将System.Delegate或System.Array约束为基类
6、可以同时约束一个基类以及一个或多个接口,但是该基类必须首先出现在派生约束列表中。
7、C#允许你将另一个泛型参数指定为约束
public   class   MyClass <T,U>   where   T:U
{...}
8、可以自己定义基类或接口进行泛型约束
9、自定义的接口或基类必须与泛型具有一致的可见性

(2)、构造函数约束
如:
class 

9 7 3 1 2 3 4 4 8 :

 
相关内容
查找更多 ◇ C#初级编程、.NET技术门外汉、基础性概念通俗理解