Static静态字段,静态方法,静态代码块
壹 简介
一些场景下会要求一个类的多个实例共享一个成员变量;有时候想定义一些不和具体对象关联、不需要new就调用的方法
举例:Console类的WriteLine,MessageBox的Show。这个时候就要使用静态。
所谓静态方法、静态成员是类的方法、类的成员,他不归属于任何一个对象。因此不用new出来,直接类型.静态方法()就能用了。
贰 特征
1、static变量不需要new就可以直接通过类名调用。static变量是共享的内存空间,非static变量则是对象隔离的。
2、static 方法中无法使用this关键字,因为static独立于对象存在,不是任何人的唯一。
3、static成员中只能访问static成员,不能直接访问非static成员。非static成员可以访问static成员。
叁 静态代码块
1. 示例
class
MyTest
{
static
MyTest()
{
Console.WriteLine(
"静态代码块"
);
}
public
MyTest()
{
Console.WriteLine(
"构造方法"
);
}
}
MyTest t1 =
new
MyTest();
MyTest t2 =
new
MyTest();
public
class
MyJingTaiDaimaKuai
{
public
static
int
i = test1();
//最开始执行
public
int
age = test2();
//new的时候先执行成员变量的初始化,再执行构造函数
static
MyJingTaiDaimaKuai()
{
Console.WriteLine(
"静态代码块"
);
//再执行
}
public
MyJingTaiDaimaKuai()
{
Console.WriteLine(
"构造函数"
);
}
public
static
int
test1()
{
Console.WriteLine(
"test1"
);
return
3;
}
public
static
int
test2()
{
Console.WriteLine(
"test2"
);
return
333;
}
}
MyJingTaiDaimaKuai a1 =
new
MyJingTaiDaimaKuai();
Console.WriteLine(a1.age);
MyJingTaiDaimaKuai a2 =
new
MyJingTaiDaimaKuai();
Console.WriteLine(a2.age);