C#简介- 类和对象 选自《C#编程语言详解》 送给新手

2016-01-29 12:39 3 1 收藏

C#简介- 类和对象 选自《C#编程语言详解》 送给新手,C#简介- 类和对象,选自《C#编程语言详解》,送给新手

【 tulaoshi.com - ASP.NET 】


类(class)是C#类型中最基础的类型。类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中。类提供了用于动态创建类实例的定义,也就是对象(object)。类支持继承(inheritance)和多态(polymorphism),即派生类能够扩展和特殊化基类的机制。使用类声明可以创建新的类。类声明以一个声明头开始,其组成方式如下:先是指定类的特性和修饰符,后跟类的名字,基类(如果有的话)的名字,以及被该类实现的接口名。声明头后面就是类体了,它由一组包含在大括号({})中的成员声明组成。下面是一个名为Point的简单类的声明:public class Point{ public int x, y; public Point(int x, int y){ this.x = x; this.y = y; }}使用new运算符创建类的实例,它将为新实例分配内存,调用构造函数初始化实例,并且返回对该实例的引用。下面的语句创建两个Point对象,并且将那些对象的引用保存到两个变量中: Point p1 = new Point(0, 0); Point p2 = new Point(10, 20);当不再使用对象时,该对象所占的内存将被自动回收。在C#中,没有必要也不可能显式地释放对象。1.6.1 成员类的成员或者是静态成员(static member),或者是实例成员(instance member)。静态成员属于类,实例成员属于对象(类的实例)。表1.6提供了类所能包含的各种成员的描述。表1.6 类 的 成 员成 员描 述常数与类关联的常量值字段类的变量方法能够被类执行的计算和行为属性使对象能够读取和写入类的命名属性索引器使对象能够用与数组相同的方式进行索引事件能够被类产生的通知运算符类支持的转换和表达式运算符构造函数初始化类的实例或者类本身析构函数在永久销毁类的实例之前执行的行为类型被类声明的嵌套类型1.6.2 可访问性类的每个成员都有关联的可访问性,它控制能够访问该成员的程序文本区域。有5种可能的可访问性形式。表1.7概述了类的可访问性的意义。表1.7 类的可访问性可访问性意 义public访问不受限制protected访问仅限于包含类或从包含类派生的类型internal访问仅限于当前程序集protected internal访问仅限于从包含类派生的当前程序集或类型private访问仅限于包含类1.6.3 基类类的声明可能通过在类名后加上冒号和基类的名字来指定一个基类译注4。省略基类等同于直接从object类派生。在下面的示例中,Point3D的基类是Point,而Point的基类是object:public class Point{ public int x, y; public Point(int x, int y){ this.x = x; this.y = y; }}public class Point3D: Point{ public int z; public Point3D(int x, int y, int z): Point(x, y){ this.z = z; }}Point3D类继承了其基类的成员。继承意味着类将隐式地包含其基类的所有成员(除了基类的构造函数)。派生类能够在继承基类的基础上增加新的成员,但是它不能移除继承成员的定义。在前面的示例中,Point3D类从Point类中继承了x字段和y字段,并且每一个Point3D实例都包含三个字段x,y和z。从类类型到它的任何基类类型都存在隐式的转换。并且,类类型的变量能够引用该类的实例,或者任何派生类的实例。例如,对于前面给定的类声明,Point类型的变量能够引用Point实例或者Point3D实例:Point a = new Point(10, 20);Point b = new Point3D(10, 20, 30);1.6.4 字段字段是与对象或类相关联的变量。当一个字段声明中含有static修饰符时,由该声明引入的字段为静态字段(static field)。它只标识了一个存储位置。不管创建了多少个类实例,静态字段都只会有一个副本。当一个字段声明中不含有static修饰符时,由该声明引入的字段为实例字段(instance field)。类的每个实例都包含了该类的所有实例字段的一个单独副本。在下面的示例中,Color类的每个实例都有r,g,b实例字段的不同副本,但是Black,White,Red,Green和Blue等静态字段只有一个副本:public class Color{ public static readonly Color Black = new Color(0, 0, 0); public static readonly Color White = new Color(255, 255, 255); public static readonly Color Red = new Color(255, 0, 0); public static readonly Color Green = new Color(0, 255, 0); public static readonly Color Blue = new Color(0, 0, 255); private byte r, g, b; public Color(byte r, byte g, byte b) { this.r = r; this.g = g; this.b = b; }}如前面的示例所示,通过readonly修饰符声明只读字段。给readonly字段的赋值只能作为声明的组成部分出现,或者在同一类中的实例构造函数或静态构造函数中出现。1.6.5 方法方法(method)是一种用于实现可以由对象或类执行的计算或操作的成员。静态方法(static method)只能通过类来访问。实例方法(instance method)则要通过类的实例访问。方法有一个参数(parameter)列表(可能为空),表示传递给方法的值或者引用;方法还有返回类型(return type),用于指定由该方法计算和返回的值的类型。如果方法不返回一个值,则它的返回类型为void。在声明方法的类中,该方法的签名必须是惟一的。方法的签名由它的名称、参数的数目、每个参数的修饰符和类

来源:https://www.tulaoshi.com/n/20160129/1487011.html

延伸阅读
Linq项目简介和开发环境的搭建   9月份,微软推出了一项名为“Linq项目”的新技术,用于在.NET语言中集成数据查询的功能。您可以从http://msdn.microsoft.com/netframework/future/得到Linq项目的技术预览版,其中包括大量的介绍文章(英文)和C# 3.0以及VB 9.0的编译器。   Linq项目英文全称为Langu...
在本篇文章中,我们将讨论下面的问题: 使用C#创建一个简单的COM对象(使用COM的Interop特性)。 从VC++客户端软件中访问COM。客户端软件使用了TypeLibrary(.TLB文件)。 为了简单和方便开发人员使用、测试起见,我们使用了SQLSERVER数据库软件的缺省安装中的Northwind数据库。 修改COM对象中SQLServer的名字,与SQLSe...
摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在.NET环境中的使用。 关键词:受管代码;非受管代码;Excel对象;动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系统时,对于不同的用户...
    我感觉声音的播放比较简单。我们从播放声音开始。为什么我这么觉得?我也不知道。 这里是展示最最最最最简单的DirectX播放声音的例子,我尽量省略了无关的代码。最后的代码只有19行,够简单了吧? 准备工作: 1.安装了DirectX SDK(有9个DLL文件)。这里我们只用到MicroSoft.DirectX.dll 和 Microsoft.Directx.DirectSound...
我们创建的第一个类是Shape。这是一个抽象类,因为我们不想创建这个类的实例,我们要创建的是它的派生类的实例。我们从所有的形状(圆、长方形、正方形)提取出共同特征到Shape类。Shape类有一个实例变量color,它的变量声明中带有protected修饰符。protected修饰符表示这个变量只能在类的内部或者该类的派生类中访问。紧接这个变量声明的就是Sh...

经验教程

494

收藏

6
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部