在C#程序中,对象使用点运算符“.”来引用类的成员,并且引用的范围受到成员的访问修饰符的控制。看下面的一段代码:
在上述代码中,在类ff内通过点运算符的方式引用了类mm内的成员。例如nn.aa、nn.bb和nn.cc。根据访问修饰符的控制范围,得出类mm的对象nn不能在mm类外引用类的protected和private成员。所以在上述代码中,对象nn的运行权限结果如下。
nn.aa:可以引用,因为可以引用public成员。
nn.bb:不可以引用,因为在类外不可以引用protected成员。
nn.cc:可以引用,因为在程序内可以引用internal成员。
nn.Drive():可以引用,因为可以引用public成员。
注意
在使用关键字new创建一个类的对象时,将在托管堆中为对象分配一块内存,每一个对象都有不同的内存。代表对象的变量存储的是存放对象的内存的地址。因此,两个不同的对象,即使它们的所有成员的值或代码都相同,它们也是不相等的。
实例21:根据用户姓名输出对应QQ名
下面通过一个简单实例来说明使用对象的流程,本实例保存在光盘:\daima\“8”文件夹内,项目名为duixiangshiyong。实例的功能是根据用户的姓名输出对应的QQ名。实例文件的主要代码如下:
上述实例代码的设计流程如下。
1)分别定义类QQming和DQQming。
2)在类QQming内定义函数Bark(),用于输出用户的QQ名。
3)在类QQming内创建类QQming的对象,并分别调用QQming的成员。
4)分别设置两个用户名,并将对应的名字和QQ名通过WriteLine()输出。
5)根据用户名判断是否为同一个用户对象,并将判断结果输出。(www.xing528.com)
执行后将显示对应的用户名和QQ名,并显示是否为同一个用户对象的判断结果,如图8-1所示。
图8-1 实例执行结果
在上述实例代码中,虽然两用户的QQ名相同,都是“大爱无敌”,但是他们并不是同一个人。
多学一招
在C#对象中,如果将一个对象赋值给另一个对象,那么这两个对象就是相同的,代表它们的变量都将保存同一块内存的地址中。如果改变其中一个对象内成员的状态,则也会影响另一个对象内的成员的状态。看下面的一段的代码:
上述实例代码的设计流程如下。
1)分别定义类mm和nn。
2)在类mm内定义函数Bark(),用于输出用户的QQ名。
3)在类nn内创建类mm的对象,并分别调用mm的成员。
4)分别设置两个用户名,并将对应的名字和QQ名通过WriteLine()输出。
5)根据用户名判断是否为同一个用户对象,并将判断结果输出。
执行后将显示对应的用户名和QQ名,并显示用户名修改后的处理结果,执行结果如图8-2所示。
从图8-2的执行结果可以看出,如果修改了对象dd的值,对应的对象aa的值也会修改。这是因为aa和dd是同一个用户。
图8-2 实例执行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。