- 1
- 0
- 约1.22万字
- 约 47页
- 2015-11-19 发布于广东
- 举报
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * 第6章 面向对象的高级应用及C#语法新特性 6.7 委托与事件 C#语言中引入了事件(Event)这一概念,它是封装了委托类型的变量,这样,在类的内部,我们可以把事件声明为public,而不是直接对外公开委托变量。同时在类的外部,绑定“+=”和取消绑定“-=”的访问限定符与你在声明事件时使用的访问符相同。 事件其实是声明一个进行了封装的委托类型的变量 第6章 面向对象的高级应用及C#语法新特性 6.8 匿名类型 在很多情况下,我们需要一种能够临时将一批具有一定关联的数据存放起来的对象;或者在某些情况下,我们对仅一个对象的“形状”(如属性的名字和类型等)比较感兴趣。例如Product类,当它和其他商品放在一起进行查询时,我们可能仅对其名称和价格感兴趣,并且希望将这两种属性放在另外一个单独的临时对象中以备今后使用。这时,我们关注的仅仅是这个临时对象具有Name和Price的属性感兴趣,至于它究竟是什么类型就无关紧要了。然而,为了使这样一个对象得以存在,通常不得不为这个无关紧要的类型写上一大堆“样本代码”,无非就是定义一个如Product的类,其中无非也就是形如name和price的私有域和名为Name与Price的公共可读写方法。 第6章 面向对象的高级应用及C#语法新特性 6.8 匿名类型 如果像这样封装的成员太多,代码量还是很可怕的,并且维护的工作量也相当大。针对于这些问题,在.NET3.5中,我们有了一个解决这种问题的捷径,称之为匿名类型,它是C#匿名方法语法的扩展。 var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承了object的、没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。看下面的例子: 如果需要一个对象包含名字和价格,则可以声明如下: // 代表产品的一个匿名对象 var product = new { Name = notebook, Price = 199}; 这会生成一个包含Name和Price属性的对象。 第6章 面向对象的高级应用及C#语法新特性 6.8 匿名类型 一个匿名类型也有它的生存周期,那就是在生成它的方法之内。如果要向另一个方法以参数的形式传递它,那就必须先将其转换为object类型(匿名类型也是从object直接派生而来的)。但是这样会毁坏它内部属性的强类型。如果需要保持内部属性的强类型,所以建议在大多数情况下,还是采用传统的类或者结构体来存储数据比较可靠。 第6章 面向对象的高级应用及C#语法新特性 6.9 对象与集合初始化器 在写一些类的时候,我们往往在写构造方法的时候思考很长时间,除了一个无参构造函数外还在想需要写几个构造函数呢?哪些参数是需要初始化的?现在再也不需要为这事烦恼了。在.NET3.5中提供了对象与集合初始化器。 第6章 面向对象的高级应用及C#语法新特性 6.9 对象与集合初始化器 使用对象初始化器可以在创建对象时向对象的任何可访问的字段或属性分配值,而无需显式调用构造函数。如下面的代码所示: // 图书类 public class Book { // 图书名称 public string Title { get; set; } // 单价 public float Price { get; set; } // 作者 public string Author { get; set; } // ISBN号 public string ISBN { get; set; } } //对象初始化器 Book book = new Book { Title=C#,ISBN=123-456-789}; 第6章 面向对象的高级应用及C#语法新特性 6.9 对象与集合初始化器 总的说来对象与集合初始化器有如下特点: 对象初始化器实际上利用了编译器对对象中对外可见的字段和属性进行按序赋值。 对象初始化器允许只给一部分属性赋值,包括internal访问级别 对象初始化器可以结合构造函数一起使用,并且构造函数初始化先于对象初始化器执行。 集合初始化器会对初始化器中的元素进行按序调用ICollectionT.Add(T)方法。 注意对象初始化器和集合初始化器中成员的可见性和调用顺序。 对象与集合初始化器同样是一种编译时技术。 第6章 面向对象的高级应用及C#语法新特性 6.10 扩展方法 扩展方法使我们能够向现有类“添加”方法,而无需创建新的派生类、重新编译或以其他方式修改原始类。扩展方法是一种特殊的静态方法
您可能关注的文档
- 新Visual Basic程序设计教程 普通高等教育“十一五”国家级规划教材 教学课件 李雁翎 周东岱 潘伟 yl _13.ppt
- 新Visual Basic程序设计教程 普通高等教育“十一五”国家级规划教材 教学课件 李雁翎 周东岱 潘伟 yl _14.ppt
- 新Visual Basic程序设计教程 普通高等教育“十一五”国家级规划教材 教学课件 李雁翎 周东岱 潘伟 yl _15.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 课程介绍与项目一初识Visual Basic语言.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 项目八设计数据库应用程序.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 项目二 vb语言基础.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 项目六菜单.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 项目七设计文件操作程序.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 项目三Visual Basic基本程序控制结构.ppt
- 新Visual Basic程序设计教程 项目式 教学课件 陈秀莉 王体英 项目四用户界面设计.ppt
最近下载
- 2025《“混改”后的云南白药公司治理及效果分析》6700字.doc VIP
- 2025年山东理工职业学院单招《数学》检测卷(word)附答案详解.docx VIP
- 2025年山东理工职业学院单招《数学》考前冲刺练习【实用】附答案详解.docx VIP
- 新人教版九年级数学下册导学案全册.docx VIP
- (正式版)JJF(蒙) 082-2024 《旋转蒸发仪校准规范》.pdf VIP
- 国际脓毒症和脓毒性休克管理指南解读.ppt
- 七年级下册语文单元测试卷及解析.docx VIP
- 人工智能安全与伦理挑战.pptx VIP
- 2023年执业药师继续教育咽喉反流性疾病的诊治参考答案.docx VIP
- 2025年山东理工职业学院单招英语模拟试题(附答案解析) 完整版2025.pdf VIP
原创力文档

文档评论(0)