首页 理论教育 C#编程自学手册:使用对象的注意事项和实例分析

C#编程自学手册:使用对象的注意事项和实例分析

时间:2023-10-22 理论教育 版权反馈
【摘要】:注意在使用关键字new创建一个类的对象时,将在托管堆中为对象分配一块内存,每一个对象都有不同的内存。实例21:根据用户姓名输出对应QQ名下面通过一个简单实例来说明使用对象的流程,本实例保存在光盘:\daima\“8”文件夹内,项目名为duixiangshiyong。3)在类nn内创建类mm的对象,并分别调用mm的成员。5)根据用户名判断是否为同一个用户对象,并将判断结果输出。从图8-2的执行结果可以看出,如果修改了对象dd的值,对应的对象aa的值也会修改。

C#编程自学手册:使用对象的注意事项和实例分析

在C#程序中,对象使用点运算符“.”来引用类的成员,并且引用的范围受到成员的访问修饰符的控制。看下面的一段代码:

978-7-111-36370-5-Part02-117.jpg

在上述代码中,在类ff内通过点运算符的方式引用了类mm内的成员。例如nn.aa、nn.bb和nn.cc。根据访问修饰符的控制范围,得出类mm的对象nn不能在mm类外引用类的protected和private成员。所以在上述代码中,对象nn的运行权限结果如下。

978-7-111-36370-5-Part02-118.jpgnn.aa:可以引用,因为可以引用public成员。

978-7-111-36370-5-Part02-119.jpgnn.bb:不可以引用,因为在类外不可以引用protected成员。

978-7-111-36370-5-Part02-120.jpgnn.cc:可以引用,因为在程序内可以引用internal成员。

978-7-111-36370-5-Part02-121.jpgnn.Drive():可以引用,因为可以引用public成员。

注意

在使用关键字new创建一个类的对象时,将在托管堆中为对象分配一块内存,每一个对象都有不同的内存。代表对象的变量存储的是存放对象的内存的地址。因此,两个不同的对象,即使它们的所有成员的值或代码都相同,它们也是不相等的。

实例21:根据用户姓名输出对应QQ名

下面通过一个简单实例来说明使用对象的流程,本实例保存在光盘:\daima\“8”文件夹内,项目名为duixiangshiyong。实例的功能是根据用户的姓名输出对应的QQ名。实例文件的主要代码如下:

978-7-111-36370-5-Part02-122.jpg

978-7-111-36370-5-Part02-123.jpg

上述实例代码的设计流程如下。

1)分别定义类QQming和DQQming。

2)在类QQming内定义函数Bark(),用于输出用户的QQ名。

3)在类QQming内创建类QQming的对象,并分别调用QQming的成员。

4)分别设置两个用户名,并将对应的名字和QQ名通过WriteLine()输出。

5)根据用户名判断是否为同一个用户对象,并将判断结果输出。(www.xing528.com)

执行后将显示对应的用户名和QQ名,并显示是否为同一个用户对象的判断结果,如图8-1所示。

978-7-111-36370-5-Part02-124.jpg

图8-1 实例执行结果

在上述实例代码中,虽然两用户的QQ名相同,都是“大爱无敌”,但是他们并不是同一个人。

多学一招

在C#对象中,如果将一个对象赋值给另一个对象,那么这两个对象就是相同的,代表它们的变量都将保存同一块内存的地址中。如果改变其中一个对象内成员的状态,则也会影响另一个对象内的成员的状态。看下面的一段的代码:

978-7-111-36370-5-Part02-125.jpg

上述实例代码的设计流程如下。

1)分别定义类mm和nn。

2)在类mm内定义函数Bark(),用于输出用户的QQ名。

3)在类nn内创建类mm的对象,并分别调用mm的成员。

4)分别设置两个用户名,并将对应的名字和QQ名通过WriteLine()输出。

5)根据用户名判断是否为同一个用户对象,并将判断结果输出。

执行后将显示对应的用户名和QQ名,并显示用户名修改后的处理结果,执行结果如图8-2所示。

从图8-2的执行结果可以看出,如果修改了对象dd的值,对应的对象aa的值也会修改。这是因为aa和dd是同一个用户。

978-7-111-36370-5-Part02-126.jpg

图8-2 实例执行结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈