静态成员变量 :可以用类名直接访问,也可以用类的实例化来访问,
非静态成员变量:不可以直接使用类名访问, (但是可以用实例化来访问)
class myTest
{
public static int sNumber;
public int nNumber;
public myTest(int i ,int j){
sNumber=i;
nNumber=j;
}
}
myTest mt= new myTest(100,50);
console.writeline(myTest.sNumber); //100, 静态成员变量可以直接用类名来访问,
console.writeline(myTest.nNumber); // 此刻会报错,因为非成员变量不能直接用类名来访问,
console.writeline(mt.nNumber) ; //50 非静态成员可以用实例化类来调用
------------------------------------------------
静态方法中只能使用静态成员变量,非静态方法既能使用 静态变量,也可以使用非静态成员变量。
class MyClass {
static void StaticFun() { //静态方法
nsMember += nsMember; //出错!因为nsMember是非静态成员
sMember += sMember; //ok,因为sMember是静态成员
}
void UStaticFun() { //非静态方法
sMember += nsMember; //ok
sMember += sMember; //ok
}
}
//关于静态构造函数的执行顺序
//静态构造函数的执行发生在类的静态成员初始化之后和类的第一个实例创建之前.
一个类只能定义一个静态构造函数,并且不能带有参数
|