C#中的静态成员和非静态成员2007-09-21 本站 若将类中的某个成员声明为static,该成员称为静态成员。类中的成员要么是静态,要么是非静态。一般说来,静态成员是属于类所有的,非静态成员则属于类的实例--对象。以下示例代码演示了如何声明静态和非静态成员。程序清单10-5:
using System;class Test{int x;static int y; void F(){ x=1; //正确,等价于this.x=1 y=1; //正确,等价于Test.y=1}static void G(){x=1; //错误,不能访问this.xy=1; //正确,等价于Test.y=1}static void Main(){Test t=new Test();t.x=1;//正确t.y=1;//错误,不能在类的实例中访问静态成员Test.x=1; //错误,不能按类访问非静态成员Test.y=1; //正确 }}
类的非静态成员属于类的实例所有,每创建一个类的实例,都在内存中为非静态成员开辟了一块区域。而类的静态成员属于类所有,为这个类的所有实例所共享。无论这个类创建了多少个副本,一个静态成员在内存中只占有一块区域。