11 2015 档案

摘要:10.6.3 类库的客户应用程序 新项目命名为Ch10CardClient。添加一个对类库项目Ch10CardLib的引用。代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;... 阅读全文
posted @ 2015-11-16 17:22 星月相随 阅读(223) 评论(0) 推荐(0) 编辑
摘要:10.6.2 编写类库 类和枚举都包含在一个类库项目 Ch10CardLib 中。这个项目将包含 4 个.cs 文件,Card.cs 包含Card类的定义,Deck.cs包含Deck类的定义,Suit.cs和Rank.cs文件包含枚举。 1. \Chapter10目录中创建一个新类库项目Ch10... 阅读全文
posted @ 2015-11-16 17:13 星月相随 阅读(474) 评论(0) 推荐(0) 编辑
摘要:10.6 示例应用程序 为了解释前面使用的一些技术,下面开发一个类模块,以便在后续章节中使用。这个类模块包含两个类: Card——表示一张标准的扑克牌,包含梅花、方块、红心和黑桃,其顺序是从A到K。 Deck——表示一副完整的 52 张扑克牌,在扑克牌中可以按照位置访问各张牌,并可以... 阅读全文
posted @ 2015-11-16 16:48 星月相随 阅读(221) 评论(0) 推荐(0) 编辑
摘要:10.5 部分方法定义 部分类也可以定义部分方法。部分方法在部分类中定义,但没有方法体,在另一个部分类中包含实现代码。在这两个部分类中,都要使用partial关键字。public partial class MyClass { partial void MyPartialMethod();... 阅读全文
posted @ 2015-11-16 16:09 星月相随 阅读(245) 评论(0) 推荐(0) 编辑
摘要:10.4 部分类定义 如果所创建的类包含一种类型或其他类型的许多成员时,就很容易混淆,代码文件也比较长。这里可以采用前面章节介绍的一种方法,即给代码分组。在代码中定义区域,就可以折叠和展开各个代码区,使代码更便于阅读。例如,有一个类的定义如下:public class MyClass { #... 阅读全文
posted @ 2015-11-16 15:40 星月相随 阅读(531) 评论(0) 推荐(0) 编辑
摘要:2. 用非公共的可访问性添加属性存取器 前面说过,如果实现带属性的接口,就必须实现匹配的get/set存取器。这并不是绝对正确的——如果在定义属性的接口中只包含set块,就可给类中的属性添加get块,反之亦然。但是,只有所添加的存取器的可访问修饰符比接口中定义的存取器的可访问修饰符更严格时,才能这... 阅读全文
posted @ 2015-11-13 11:09 星月相随 阅读(166) 评论(0) 推荐(0) 编辑
摘要:10.3 接口的实现 在继续前,先讨论一下如何定义和实现接口。第9章介绍了接口定义的方式与类相似,使用的代码如下:interface IMyInterface { // Interface members.} 接口成员的定义与类成员的定义相似,但有几个重要的区别: 不允许使用访问... 阅读全文
posted @ 2015-11-13 10:53 星月相随 阅读(521) 评论(0) 推荐(0) 编辑
摘要:10.2.3 嵌套的类型定义 除了在名称空间中定义类型之外,还可以在其他类中定义这些类。如果这么做,就可以在定义中使用各种访问修饰符,而不仅仅是public和internal,也可以使用new关键字隐藏继承于基类的类型定义。例如,下面的代码定义了MyClass,也定义了一个嵌套的类MyNeste... 阅读全文
posted @ 2015-11-13 10:18 星月相随 阅读(147) 评论(0) 推荐(0) 编辑
摘要:10.2.2 调用重写或隐藏的基类方法 无论是重写成员还是隐藏成员,都可以在派生类的内部访问基类成员。这在许多情况下都是很有用的,例如: 要对派生类的用户隐藏继承的公共成员,但仍能在类中访问其功能。 要给继承的虚拟成员添加实现代码,而不是简单地用重写的新执行代码替换它。 为此,可以... 阅读全文
posted @ 2015-11-12 09:37 星月相随 阅读(230) 评论(0) 推荐(0) 编辑
摘要:10.2 类成员的其他议题 下面该讨论一些比较高级的成员议题了。本节主要研究: 隐藏基类方法 调用重写或隐藏的基类方法 嵌套的类型定义10.2.1 隐藏基类方法 当从基类继承一个(非抽象的)成员时,也就继承了其实现代码。如果继承的成虽是虚拟的,就可以用override关键字重... 阅读全文
posted @ 2015-11-12 09:25 星月相随 阅读(195) 评论(0) 推荐(0) 编辑
摘要:10.1.5 重构成员 在添加属性时有一项很方便的技术,可以从字段中生成属性在添加属性时有一项很方便的技术,可以从字段中生成属,下面是一个重构(refactoring)的示例,“重构”表示使用工具修改代码,而不是手工修改。为此,只需右击类图中的某个成员,或者在代码视图中右击某个成员即可。 例如,... 阅读全文
posted @ 2015-11-12 08:58 星月相随 阅读(204) 评论(0) 推荐(0) 编辑
摘要:10.1.6 自动属性 属性是访问时象状态的首选方式,因为它们禁止外部代码实现对象内部的数据存储机制。属性还对内部数据的访问方式施加了更多的控制,本章代码在多处体现了这一点。但是,一般以非常标准的方式定义属性,即通过一个公共属性来直接访问一个私有成员。其代码非常类似于上一节的代码,这是VS重构工具... 阅读全文
posted @ 2015-11-11 21:06 星月相随 阅读(226) 评论(0) 推荐(0) 编辑
摘要:10.1.3 定义属性 属性定义方式与字段类似,但包含的内容比多。如前所述,属性涉及的内容比字段多,是因为它们在修改状态前还可以执行一些额外的操作。实际上,它们可能并不修改状态。属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个块用于设置属性的值。 这两个块也称为访问器,分别用get和s... 阅读全文
posted @ 2015-11-11 17:58 星月相随 阅读(344) 评论(0) 推荐(0) 编辑
摘要:10.1.2 建立方法 方法使用标准函数格式、可访问性和可选的static修饰符来声明。例如class MyClass { public string GetString() { return "Here is a string."; }} 注意,如果使用了 stati... 阅读全文
posted @ 2015-11-11 17:20 星月相随 阅读(192) 评论(0) 推荐(0) 编辑
摘要:第10章 定义类成员 本章内容: ● 如何定义类成员 ● 如何使用类图添加成员 ● 如何控制类成员的继承 ● 如何定义嵌套的类 ● 实现接口实明摆口 ● 如何使用部分类定义 ● 如何使用“调用层次结构”(Call Hierarchy)窗口 本章继续讨论在... 阅读全文
posted @ 2015-11-11 17:10 星月相随 阅读(266) 评论(0) 推荐(0) 编辑
摘要:9.8 浅度和深度复制 从一个变量到另一个变量按值复制对象,而不是按引用复制对象(即以与结构相同的方式复制)可能非常复杂。因为一个对象可能包含许多其他对象的引用,例如,字段成员等,这将涉及许多繁琐的操作。把每个成员从一个对象复制到另一个对象中可能不会成功,因为其中一些成员可能是引用类型。 .N... 阅读全文
posted @ 2015-11-11 15:32 星月相随 阅读(163) 评论(0) 推荐(0) 编辑
摘要:9.7 结构类型 第8章提到过结构和类非常相似,但结构是值类型,而类是引用类型。这意味着什么?最简明的方式是用一个示例来说明。代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text... 阅读全文
posted @ 2015-11-11 15:29 星月相随 阅读(263) 评论(0) 推荐(0) 编辑
摘要:9.6 接口和抽象类 抽象类和接口都包含可以由派生类继承的成员。接口和抽象类都不能直接实例化,但可以声明这些类型的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着通过这些变量来使用这些类型的成员,但不能直接访问派生对象的其他成员。 下面看看它们的区别。派生类只能继承... 阅读全文
posted @ 2015-11-11 11:50 星月相随 阅读(240) 评论(0) 推荐(0) 编辑
摘要:9.5 类库项目 除了在项目中把类放在不同的文件中之外,还可以把它们放在完全不同的项目中。如果一个项目什么都不包含,只包含类(以及其他相关的类型定义,但没有入口点),该项目就称为类库。 类库项目编译为.dll 程序集,在其他项目中添加对类库项目的引用,就可以访问它的内容(这可以是同一个解决方案的... 阅读全文
posted @ 2015-11-11 10:59 星月相随 阅读(836) 评论(0) 推荐(0) 编辑
摘要:9.3 构造函数和析构函数 在C#中定义类时,常常不需要定义相关的构造函数和析构函数,因为在建立代码时,如果没有提供它们,编译器会自动添加它们。但是,如果需要,可以提供自己的构造函数和析构函数,以便初始化对象和清理对象。 使用下述语法可以把一个简单的构造函数添加到类中:class MyClass... 阅读全文
posted @ 2015-11-11 10:22 星月相随 阅读(524) 评论(0) 推荐(0) 编辑
摘要:9.2 System.Object 因为所有的类都继承于System.Object,所以这些类都可以访问该类中受保护的成员(protected)和公共的成员(public)。下面看看可供使用的成员有哪些。System.Object保护的方法如表9-2所示。 这些方法是.NET Fram... 阅读全文
posted @ 2015-11-04 09:49 星月相随 阅读(207) 评论(0) 推荐(0) 编辑
摘要:第九章 定义类 本章内容: ● 如何在C#中定义类和接口 ● 如何使用控制可访问性和继承的关键字 ● System.Object类及其在类定义中的作用 ● 如何使用VS和VCE提供的一些帮助工具 ● 如何定义类库 ● 接口和抽象类的异同 ● 结构类型的更多... 阅读全文
posted @ 2015-11-03 18:30 星月相随 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:8.3 Windows应用程序中的OOP 第2章介绍了如何在C#中创建简单的Windows应用程序。 Windows应用程序非常依赖OOP技术,本节将论述OOP技术,说明本章的一些论点。下面通过一个简单示例加以说明。 (1) 在Chapter08目录中创建一个新的Windows应用程序Ch0... 阅读全文
posted @ 2015-11-03 14:15 星月相随 阅读(235) 评论(0) 推荐(0) 编辑
摘要:8.2.7 引用类型和值类型 在C#中,数据根据变量的类型以两种方式中的一种存储在一个变量中。变量的类型分为两种:引用类型和值类型,其区别如下: 值类型在内存的一个地方存储它们自己和它们的内容。 引用类型存储指向内存中其他某个位置(称为堆)的引用,而在另一个位置存储内容。 实际上,... 阅读全文
posted @ 2015-11-03 13:50 星月相随 阅读(143) 评论(0) 推荐(0) 编辑
摘要:8.2.6 事件 对象可以激活事件,作为它们处理的一部分。事件是非常重要的,可以在代码的其他部分起作用,类似于异常(但功能更强大)。例如,可以在把Animal对象添加到Animals组集合中时,执行特定的代码,而这部分代码不是Animals类的一部分,也不是调用Add()方法的代码的一部分。为此,... 阅读全文
posted @ 2015-11-03 12:00 星月相随 阅读(166) 评论(0) 推荐(0) 编辑
摘要:8.2.5 运算符重载 本书前面介绍了如何使用运算符处理简单的变量类型。有时也可以把运算符用于从类实例化而来的对象,因为类可以包含如何处理运算符的指令。 例如,给Animal添加一个新属性Weight,接着使用下述代码比较家禽的体重: if (cowA.Weight > cowB.We... 阅读全文
posted @ 2015-11-03 11:57 星月相随 阅读(130) 评论(0) 推荐(0) 编辑
摘要:8.2.4 对象之间的关系 继承是对象之间的一种简单关系,可以让派生类完整地获得基类的特性,而派生类也可以访问基类内部的一些工作代码(通过受保护的成员)。 对象之间还有其他一些重要关系。 本节简要讨论下述关系: 包含关系:一个类包含另一个类。这类似于世承关系,但包含类可以控制对被包含类的... 阅读全文
posted @ 2015-11-03 11:04 星月相随 阅读(356) 评论(0) 推荐(0) 编辑
摘要:8.2.3 多态性 继承的一个结构是派生于基类的类在方法和属性上有一定的重叠,因此,可以使用相同的语法处理从同一个基类实例化的对象。例如,如果基类 Animal 有一个 EatFood()方法,则从派生于它的类Cow和Chicken中调用这个方法,其语法是类似的: Cow myCow =... 阅读全文
posted @ 2015-11-03 09:58 星月相随 阅读(260) 评论(0) 推荐(0) 编辑
摘要:8.2.2 继承 承是 OOP 最重要的特性之一。任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所有成员。在OOP 中,被继承(也称为派生)的类称为父类(也称为基类)。注意,C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。 继承性可以从一个较一般的基类扩展或创建更... 阅读全文
posted @ 2015-11-02 16:58 星月相随 阅读(253) 评论(0) 推荐(0) 编辑
摘要:8.2 OOP技术 下面讨论对象的其他一些特性,包括: 接口 继承 多态性 对象之间的关系 运算符重载 事件 引用类型和值类型8.2.1 接口 接口是把公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合。 一且定义了接口,就可... 阅读全文
posted @ 2015-11-02 16:26 星月相随 阅读(198) 评论(0) 推荐(0) 编辑
摘要:8.1.4 静态和实例类成员 属性、方法和字段等成员是对象实例所特有的,此外,还有静态成员(也称为共享成员,尤其是Visual Basic 用户常常使用这个术语),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将它们看作是类的全局对象。静态属性和静态字段可以访问独立于任... 阅读全文
posted @ 2015-11-02 14:50 星月相随 阅读(168) 评论(0) 推荐(0) 编辑
摘要:8.1.3 对象的生命周期 每个对象都有一个明确定义的生命周期,除了“正在使用”的正常状态之外,还有两个重要的阶段: 构造阶段: 对象最初进行实例化的时期。这个初始化过程称为构造阶段,由构造函数完成。 析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存,这由析构函数完... 阅读全文
posted @ 2015-11-02 14:42 星月相随 阅读(326) 评论(0) 推荐(0) 编辑
摘要:8.1.2 一切皆对象 前面使用的每个命令都是一个属性或方法,例如,.Length 和.ToUpper()等。句点字符把对象实例名和属性或方法名分隔开来,方法名后面的()把方法与属性区分开来。 阅读全文
posted @ 2015-11-02 14:36 星月相随 阅读(200) 评论(0) 推荐(0) 编辑
摘要:2. 方法 “方法”这个术语用于表示对象中的函数。这些函数调用的方式与其他函数相同,使用返回值和参数的方式也相同(详见第6章)。 方法用于提供访问对象的功能。与字段和属性一样,方法也可以是公共的或私有的,按照需要限制外部代码的访问。它们常常使用对象状态影响它们的操作,在需要时访问私有成员,如私有... 阅读全文
posted @ 2015-11-02 14:32 星月相随 阅读(184) 评论(0) 推荐(0) 编辑
摘要:第八章 面向对象编程简介 本章内容: ● 什么是面向对象编程 ● OOP技术 ● Windows Forms应用程序对OOP的依赖关系8.1 面向对象编程的含义 前面介绍的编程方法称为函数(或过程)化编程,常常会导致所谓的单一应用程序,即所有的功能都包含在几个代码模块中(常常是一个代... 阅读全文
posted @ 2015-11-02 12:26 星月相随 阅读(343) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示