随笔分类 - c#
摘要:9.6 接口和抽象类 抽象类和接口都包含可以由派生类继承的成员。接口和抽象类都不能直接实例化,但可以声明这些类型的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着通过这些变量来使用这些类型的成员,但不能直接访问派生对象的其他成员。 下面看看它们的区别。派生类只能继承...
阅读全文
摘要:9.5 类库项目 除了在项目中把类放在不同的文件中之外,还可以把它们放在完全不同的项目中。如果一个项目什么都不包含,只包含类(以及其他相关的类型定义,但没有入口点),该项目就称为类库。 类库项目编译为.dll 程序集,在其他项目中添加对类库项目的引用,就可以访问它的内容(这可以是同一个解决方案的...
阅读全文
摘要:9.3 构造函数和析构函数 在C#中定义类时,常常不需要定义相关的构造函数和析构函数,因为在建立代码时,如果没有提供它们,编译器会自动添加它们。但是,如果需要,可以提供自己的构造函数和析构函数,以便初始化对象和清理对象。 使用下述语法可以把一个简单的构造函数添加到类中:class MyClass...
阅读全文
摘要:9.2 System.Object 因为所有的类都继承于System.Object,所以这些类都可以访问该类中受保护的成员(protected)和公共的成员(public)。下面看看可供使用的成员有哪些。System.Object保护的方法如表9-2所示。 这些方法是.NET Fram...
阅读全文
摘要:第九章 定义类 本章内容: ● 如何在C#中定义类和接口 ● 如何使用控制可访问性和继承的关键字 ● System.Object类及其在类定义中的作用 ● 如何使用VS和VCE提供的一些帮助工具 ● 如何定义类库 ● 接口和抽象类的异同 ● 结构类型的更多...
阅读全文
摘要:8.3 Windows应用程序中的OOP 第2章介绍了如何在C#中创建简单的Windows应用程序。 Windows应用程序非常依赖OOP技术,本节将论述OOP技术,说明本章的一些论点。下面通过一个简单示例加以说明。 (1) 在Chapter08目录中创建一个新的Windows应用程序Ch0...
阅读全文
摘要:8.2.7 引用类型和值类型 在C#中,数据根据变量的类型以两种方式中的一种存储在一个变量中。变量的类型分为两种:引用类型和值类型,其区别如下: 值类型在内存的一个地方存储它们自己和它们的内容。 引用类型存储指向内存中其他某个位置(称为堆)的引用,而在另一个位置存储内容。 实际上,...
阅读全文
摘要:8.2.6 事件 对象可以激活事件,作为它们处理的一部分。事件是非常重要的,可以在代码的其他部分起作用,类似于异常(但功能更强大)。例如,可以在把Animal对象添加到Animals组集合中时,执行特定的代码,而这部分代码不是Animals类的一部分,也不是调用Add()方法的代码的一部分。为此,...
阅读全文
摘要:8.2.5 运算符重载 本书前面介绍了如何使用运算符处理简单的变量类型。有时也可以把运算符用于从类实例化而来的对象,因为类可以包含如何处理运算符的指令。 例如,给Animal添加一个新属性Weight,接着使用下述代码比较家禽的体重: if (cowA.Weight > cowB.We...
阅读全文
摘要:8.2.4 对象之间的关系 继承是对象之间的一种简单关系,可以让派生类完整地获得基类的特性,而派生类也可以访问基类内部的一些工作代码(通过受保护的成员)。 对象之间还有其他一些重要关系。 本节简要讨论下述关系: 包含关系:一个类包含另一个类。这类似于世承关系,但包含类可以控制对被包含类的...
阅读全文
摘要:8.2.3 多态性 继承的一个结构是派生于基类的类在方法和属性上有一定的重叠,因此,可以使用相同的语法处理从同一个基类实例化的对象。例如,如果基类 Animal 有一个 EatFood()方法,则从派生于它的类Cow和Chicken中调用这个方法,其语法是类似的: Cow myCow =...
阅读全文
摘要:8.2.2 继承 承是 OOP 最重要的特性之一。任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所有成员。在OOP 中,被继承(也称为派生)的类称为父类(也称为基类)。注意,C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。 继承性可以从一个较一般的基类扩展或创建更...
阅读全文
摘要:8.2 OOP技术 下面讨论对象的其他一些特性,包括: 接口 继承 多态性 对象之间的关系 运算符重载 事件 引用类型和值类型8.2.1 接口 接口是把公共实例(非静态)方法和属性组合起来,以封装特定功能的一个集合。 一且定义了接口,就可...
阅读全文
摘要:8.1.4 静态和实例类成员 属性、方法和字段等成员是对象实例所特有的,此外,还有静态成员(也称为共享成员,尤其是Visual Basic 用户常常使用这个术语),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将它们看作是类的全局对象。静态属性和静态字段可以访问独立于任...
阅读全文
摘要:8.1.3 对象的生命周期 每个对象都有一个明确定义的生命周期,除了“正在使用”的正常状态之外,还有两个重要的阶段: 构造阶段: 对象最初进行实例化的时期。这个初始化过程称为构造阶段,由构造函数完成。 析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存,这由析构函数完...
阅读全文
摘要:8.1.2 一切皆对象 前面使用的每个命令都是一个属性或方法,例如,.Length 和.ToUpper()等。句点字符把对象实例名和属性或方法名分隔开来,方法名后面的()把方法与属性区分开来。
阅读全文
摘要:2. 方法 “方法”这个术语用于表示对象中的函数。这些函数调用的方式与其他函数相同,使用返回值和参数的方式也相同(详见第6章)。 方法用于提供访问对象的功能。与字段和属性一样,方法也可以是公共的或私有的,按照需要限制外部代码的访问。它们常常使用对象状态影响它们的操作,在需要时访问私有成员,如私有...
阅读全文
摘要:第八章 面向对象编程简介 本章内容: ● 什么是面向对象编程 ● OOP技术 ● Windows Forms应用程序对OOP的依赖关系8.1 面向对象编程的含义 前面介绍的编程方法称为函数(或过程)化编程,常常会导致所谓的单一应用程序,即所有的功能都包含在几个代码模块中(常常是一个代...
阅读全文
摘要:6.6 委托 委托(delegate)是一种可以把引用存储为函数的类型。这听起来相当棘手,但其机制是非常简单的。委托最重要的用途在本书后面介绍到事件和事件处理时才能解释清楚,但这里也将介绍有关委托的许多内容。委托的声明非常类似于函数,但不带函数体,且要使用 delegate 关键字。委托的声明指定...
阅读全文
摘要:6.5 函数的重载 函数重载允许创建多个同名函数。这些函数可使用不同的参数类型。(函数重载不能用函数返回值作为区分。如果只是返回值不同就能重载函数,那么调用函数时就无法知道调用哪个返回值函数(别忘了类型隐式转换),所以就没办法执行代码,所以不能用返回值来区分函数重载。) 例如,前面使用了下述代码...
阅读全文

浙公网安备 33010602011771号