网页设计 加入小组

2个成员 62个话题 创建时间:2014-10-20

网页设计教程——数据类型之对象类型

发表于 2014-11-20 791 次查看

网页设计教程——数据类型之对象类型

学习网页设计是一项具有挑战性的,前面咱们已经分享了一些关于数据类型的资料了,下面由51RGB小编Q群162542073继续分享,希望喜欢的同学多多关注

4.2.1 对象类型

对象类型是所有类型之母——它是其它类型最根本的基类。因为它是所有对象的基类,所以可把任何类型的值赋给它。例如,一个整型:

object theObj = 123;

给所有的C++程序员一个警告:object并不等价于你可能正在寻找的void*。无论如何,忘掉指针总是个好主意。

当一个值类型被加框(作为一个对象利用)时,就用到对象类型。这一章稍后会讨论到加框和消框

 

4.2.2 类类型

一个类类型可以包含数据成员、函数成员和嵌套类型。数据成员是常量、静态字段和事件。函数成员包括方法、属性、索引、操作符、构造函数和析构函数。类和结构的功能是非常相似的,但正如前面所述,结构是值类型而类是引用类型。

和C++相比,仅允许单继承。(你不能拥有派生一个新对象的多基类。) 但是,C#中的一个类可以派生自多重接口,该接口在下一节将得到描述。

第五章 “类”专门讨论使用类编程。这一节仅打算给出C#类适合类型图的概况。

 

4.2.3 接口

一个接口声明一个只有抽象成员的引用类型。跟C++中相似的概念,是一个结构的成员,且方法等于0。如果你一点都不了解这些概念,这里就是在C#中一个接口实际所做的。它只有方法名,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。

可以在一个接口中定义方法、属性和索引。所以,对比一个类,接口有什么特殊性呢?当定义一个类时,可以派生自多接口,而你可以从仅有的一个类派生。

你可能会问:"OK,但我必须实现所有的接口成员,那么我能从这个途径得到什么呢?" 我想举一个来自.NET的例子:很多类实现了IDictionary 接口。你可以使用简单的类型转换访问接口:

IDictionary myDict = (IDictionary)someobjectthatsupportsit;

现在你的代码可以访问字典了。可等等,我说很多类可以实现这个接口——所以,你可以在多个地方重用代码来访问IDictionary 接口!一旦学会,任何地方都可使用。

当你决定在类设计中使用接口时,学习更多关于面向对象的设计是个好主意。这本书不能教你这些概念,但你可以学习如何创建接口。以下的代码段定义接口IFace,它只有一个方法:

interface IFace

{

void ShowMyFace();

}

正如我所提到的,不能从这个定义实例化一个对象,但可以从它派生一个类。因此,该类必须实现ShowMyFace抽象方法:

class CFace:IFace

{

public void ShowMyFace()

{

Console.WriteLine("implementation");

}

}

 

接口成员和类成员的区别在于,接口成员不能被实现。因此,我不想在下一章中再次提到这一点。

 

4.2.4 代表元

代表元封装了具有某些名字的方法。基本上,代表元是类型安全和函数指针的安全版本(回调功能)。可以同时在一个代表元实例中同时封装静态和实例方法。

尽管你可以用代表员当作具有方法,但它们的主要用途是拥有一个类事件。再次,我想把你引到下一章,那里会详细地讨论类。

4.2.5 字符串类型

C程序员可能会诧异,但当然,C#有一个用于操作字符串数据的基本字符串类型。字符串类直接派生自对象,且它是被密封的,这意味着再不能从它派生类。就象其它类型,字符串是预定义类System String的一个别名。

它的用法十分简单:

string myString = "some text";

合并字符串同样简单:

string myString = "some text" + " and a bit more";

而如果你想访问单个字符,所要做的就是访问下标:

char chFirst = myString[0];

当比较两个字符串是否相等时,简单地使用"=="比较操作符。

if (myString == yourString) ...

我只想提一下,尽管字符串是一个引用类型,但比较时是比较值,而不是比较引用(内存地址)。

这本书的每一个例子中,几乎都用到了字符串类型,而且在这些例程中,我会介绍给你一些由字符串对象所揭示的极其有趣的方法。

 

4.2.6 数组

一个数组包含有通过计算下标访问的变量。所有包含于数组中且被当作元素的变量必须是同一类型。这种类型自然被称为"数组类型"。数组可以存储整数对象、字符串对象或者你提出的任何对象。

数组的维数就是所谓的排(rank),它决定了相关数组元素的下标数。最常用的数组是一维数组(第一排)。一个多维数组具有的排数大于1 。每个维的下标始于0,终于维的长度减1 。

应有足够的理论支持。让我们看一下用一个数组初始化器( array initializer)初始化的数组:

string[] arrLanguages = { "C", "C++", "C#" };

该简写效果等同以下:

arrLanguages[0]="C"; arrLanguages[1]="C++"; arrLanguages[2]="C#";

而编译器为你做了所有的工作。当然,它将同样为多维数组初始化器工作:

int[,] arr = {{0,1}, {2,3}, {4,5}};

它是以下的简写:

arr[0,0] = 0; arr[0,1] = 1;

arr[1,0] = 2; arr[1,1] = 3;

arr[2,0] = 4; arr[2,1] = 5;

如果你不想事先初始化一个数组,但知道了它的大小,该声明就象这样:

int[,] myArr = new int[5,3];

如果数组的大小必须动态地被计算,用于数组创建的语句可以象这样写:

int nVar = 5;

int[] arrToo = new int[nVar];

正如我在这一节开始所陈述的,你可以往数组里面塞任何东西,只要所有的元素类型都相同。因此,如果你想把任何东西放进一个数组,就声明它的类型为对象:

 

51RGB在线教育官网指定学习Q162542073 更多免费教程,素材,源文件等,请前往www.51rgb.com


责任声明:本套系列教程视频版权所属51rgbg官网,任何团体和个人未经本网允许不得转载,违者必究。

网页设计视频网站链接http://www.51rgb.com/mproductzh.aspx?classid=31

51RGB网络营销教程       http://www.51rgb.com/mproductzh.aspx?classid=38
更多视频教程请前往51rgb官网  http://www.51rgb.com

 

豆瓣 网站网页设计小组

http://www.douban.com/group/520499/

 奋斗的新浪博客

http://blog.sina.com.cn/u/1748316330

帆的QQ空间

http://user.qzone.qq.com/113125174/main

风生水起博客

http://fengshengshuiqi06.blog.163.com/manage/#m=0&t=0

网页设计教程

发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。
话题作者
51RGB教育
头衔:
活跃成员