- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]c课件第4章 面向对象的高级编程
4.5 序列化与反序列化 4、XML序列化 (1)XML 序列化仅将对象的公共字段和属性值序列化为XML流,而不转换方法、索引器、私有字段或只读属性(只读集合除外)。 (2)XML 序列化不包括类型信息,即不能保证序列化后的对象在被反序列化时,变为同一类型的对象。 (3)XML序列化的实现步骤 Class1 user = new Class1(); user.AccountName = aa; XmlSerializer mySerializer = new XmlSerializer(typeof(Class1)); StreamWriter myWriter = new StreamWriter(UserInfo.xml); mySerializer.Serialize(myWriter, user); myWriter.Close(); 4.5 序列化与反序列化 (4)XML反序列化的步骤 Class1 c; XmlSerializer mySerializer = new XmlSerializer(typeof(Class1)); FileStream myFileStream = new FileStream(UserInfo.xml, FileMode.Open); c = (Class1) mySerializer.Deserialize(myFileStream); myFileStream.Close(); 注意: 反序列化一个对象时不会调用构造函数,这一点与创建对象不同。 4.6 泛型处理 泛型(Generic)一般用在集合和在集合上运行的方法中。.NET框架2.0以前的版本不支持泛型。 使用泛型具有以下明显的优点: 1)可以避免以下两个问题:内部实现代码冗余和困扰开发人员的含混不清的编译器错误提示; 2)类型安全; 3)二进制代码重用; 4)性能; 5)清晰性。 4.6 泛型-问题描述 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(); stack.Push(“str”); string str=(string)stack.Pop(); 基于Object的堆栈缺点 性能问题 值类型需频繁地装箱、拆箱,造成较多的垃圾碎片,增加垃圾回收的负担 引用类型需要强制类型转换 类型安全问题(更严重) 编译时任务类型都转换成object,无法保证运行时类型安全。 例如:Stack stack = new Stack(); stack.Push(“abc”); int number = (int)stack.Pop(); 4.6 泛型-解决办法 public class IntStack { int[] m_Items; public void Push(int item) {...} public int Pop() {...} } public class StringStack { string[] m_Items; public void Push(string item) {...} public string Pop() {...} } 功能相似,代码冗余!维护麻烦! 基于Object的 堆栈 IntStack StringStack 代码冗余,维护复杂,工作效率低 性能问题、类型安全问题 有没有好的解决办法? 有,泛型 解决方法-采用泛型 public class StackT { T[] m_Items; public void Push(T item) {...} public T Pop() {...} } 泛型是如何实现的? 在.NET 2.0中,泛型在IL(中间语言)和CLR本身中具有本机支持 编译泛型时,就像编译类一样,泛型仅保留一个占位符。 而用特定类型实例化的泛型代码,编译时会将泛型替换为实例化的特定类型。 泛型实现 public class StackT { T[] m_Items; public void Push(T item) {...} public T Pop() {...} } 使用举例: Stackint stack = new Stackint stack.Push(1); int number = stack.Po
您可能关注的文档
最近下载
- 园林机械使用规范.pptx
- 2024年(粮油)仓储管理员理论知识竞赛理论考试题库资料500题(含答案).pdf
- Sakura樱花Sakura樱花88E51702 说明书说明书用户手册.pdf
- 2024年新改版人教版七年级上册生物全册精编复习专用资料.doc
- 2024中煤电力限公司面向中煤集团内部招聘15人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- Unit 5 Into the wild Understanding ideas 课件 高中英语外研版(2019)必修第一册.pptx VIP
- Unit 5 Into the wild Understanding ideas示范公开课教学课件【外研版必修1】.pptx
- 2024四方人员云网安全运行应知应会考试.doc
- 人教版2023-2024学年六年级上册数学 第四单元 比(学生版)-(复习讲义)单元速记·巧练.docx VIP
- 技能鉴定题库(1349道).docx
文档评论(0)