静态和实例类成员

  • 摘要:《C#入门经典(第5版)》第8章面向对象编程简介,本章首先介绍OOP的基础知识,包括回答最基本的问题"什么是对象?"。本章还将进入一个对于全面理解OOP非常重要的领域:Windows Forms应用程序。本节为大家介绍静态和实例类成员。

 

8.1.4  静态和实例类成员

属性、方法和字段等成员是对象实例所特有的,此外,还有静态成员(也称为共享成员,尤其是Visual Basic用户常常使用这个术语),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将它们看作是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但与对象实例无关的命令。在使用静态成员时,甚至不需要实例化对象。

例如,前面使用的Console.WriteLine()和 Convert.ToString()方法就是静态的,根本不需要实例化Console 或 Convert类(如果试着进行这样的实例化,操作会失败,因为这些类的构造函数不是可公共访问的,如前所述)。

许多情况下,静态属性和方法有很好的效果。例如,可以使用静态属性跟踪给类创建了多少个实例。在UML语法中,类的静态成员用下划线表示,如图8-5所示。

 
图  8-5

1. 静态构造函数

使用类中的静态成员时,需要预先初始化这些成员。在声明时,可以给静态成员提供一个初始值,但有时需要执行更复杂的初始化,或者在赋值、执行静态方法之前执行某些操作。

使用静态构造函数可以执行此类初始化任务。一个类只能有一个静态构造函数,该构造函数不能有访问修饰符,也不能带任何参数。静态构造函数不能直接调用,只能在下述情况下执行:

创建包含静态构造函数的类实例时

访问包含静态构造函数的类的静态成员时

在这两种情况下,会先调用静态构造函数,之后实例化类或访问静态成员。无论创建了多少个类实例,其静态构造函数都只调用一次。为了区分静态构造函数和本章前面介绍的构造函数,也将所有非静态构造函数称作实例构造函数。

2. 静态类

我们常常希望类只包含静态成员,且不能用于实例化对象(如Console)。为此,一种简单的方法是使用静态类,而不是把类的构造函数设置为私有。静态类只能包含静态成员,不需要实例构造函数,因为按照定义,它根本不能实例化。但静态类可以有一个静态构造函数,如上一节所述。

posted @ 2011-01-21 16:01  ebusi2010  阅读(442)  评论(0编辑  收藏  举报