VS2005C#语法上篇.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#泛型概述篇 示例思考:C#泛型概述 基于object解决方案存在的问题 1)性能问题 将值类型添加到集合中时要装箱处理,取集合中的每一个元素时需拆箱处理,造成更多的垃圾碎片,增加垃圾收集的负担. 引用类型进行强制转换时,无意中增加了系统资源开销. 2)类型安全问题 编译时任何类型都可以转换成object,无法保证运行时类型安全. 解决性能和类型安全的方法 C#泛型概述 同样严重的新问题又产生了: 影响工作效率 代码冗余,重用率不高 一个数据结构变更,要将所有类型的数据结构做相应的修改 为了提供不可预知的数据类型的支持,还是要提供object类型接口,类型安全问题又会出现 什么是泛型? 通过泛型可以定义类型安全类,而不会损害类型安全、性能或工作效率。 可以使用任何类型来声明和实例化。 声明和实例化时都必须用一个特定的类型来代替一般类型T C#泛型实例篇 泛型是如何实现的? .NET2.0中,泛型在IL(中间语言)和CLR本身中具有本机支持 编译泛型时,与其他类一样,泛型仅保留一个占位符 而用特定类型实例化泛型代码,编译时会将泛型替换为实例化的特定类型 实例讲解 ildasm 泛型的好处 一次性开发、测试和部署代码,通过任何类型(包括将来的类型)来重用它 编译器支持和类型安全 不会强行进行强制类型转换(减少装拆箱),性能提高 值类型,性能通常会提高200% 引用类型,在访问该类型时,可以预期限性能最多提高100% 结构中使用泛型 轻量级的结构中使用泛型 default关键字 若不希望在堆栈为空时引发异常,而是希望返回堆栈中存储的类型的默认值 --值类型返回0 (整型、枚举、结构) --引用类型返回null 如果是基于object,则可以返回null 例子K,T default(T) 实例化类型的默认值 多个泛型 单个类型可以定义多个泛型,且用逗号隔开 例子 ildasm 查看 截图 泛型别名 在文件头部使用using为特定类型取别名 别名作用范围是整个文件 泛 型 约 束 篇 泛型约束 比较问题 泛型约束-派生约束 泛型增加一个派生约束 Where k:IComparable 1、Where关键字 2、K:IComparable表示K只接受实现IComparable接口的类型 3、泛型接口IComparableT 泛型约束-派生约束 一个泛型参数上约束多个接口(逗号隔开) 一个约束中最多只能使用一个基类,因为C#不支持实现的多重继承 约束的基类不能是密封类或静态类,并且由编译器实施这一限制 不能将System.Delegate或System.Array约束为基类 可以同时约束一个基类及一个或多个接口,但是该基类必须首先出现在派生约束列表中 泛型约束-派生约束 C#允许将另一个一般类型参数指定为约束 定义自已的基类或接口进行泛型约束 泛型约束-构造函数约束 where T : new() 限制类型参数T必须具有公共无参构造函数. 支持公共默认构造函数 new() 泛型构造函数约束与派生约束一起使用时,必须将构造函数约束出现在约束列表中最后 泛型约束- 引用/值类型约束 可用struct约束将一般类型参数约束为值类型(如int 、bool、enum),或任何自定义结构 可用class约束将一般类型参数约束为引用类型号(类) 网络安全课程体系 网络安全课程体系(两年制) 企业级应用编程 讲师: C# 语法篇 企业级应用编程技术 了解C# 1.1 语法 熟悉VisualStudio.net IDE编程环境 掌握C# 泛型 (C# Generics) 概述 什么是泛型? 如何使用泛型? 泛型约束 C# 泛型 C# 泛型概述 泛型是用来做什么的? 答案是:没有泛型,将会很难创建类型安全的集合。 C# 是一个类型安全的语言,类型安全允许编译器(可信赖地)捕获潜在的错误,而不是在程序运行时才发现(不可信赖地,往往发生在你将产品出售了以后!)。因此,在C#中,所有的变量都有一个定义了的类型;当你将一个对象赋值给那个变量的时候,编译器检查这个赋值是否正确,如果有问题,将会给出错误信息。 一般类型T 编程模型优点:内部算法和数据操作保持 不变而实际数据类型可以在使用时指定. 泛型占位符 特定类型(整型) 泛型占位符 特定类型(整型,字符串) * * 网络安全课程体系 网络安全课程体系(两年制) * * 在 .Net 1.1 版本(2003)中,当你在使用集合时,这种类型安全就失效了。由.Net 类库提供的所有关于集合的类全是用来存储基类型(Object)的,而.Net中所有的一

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档