0%

【C#】静态成员与静态类


①静态成员

标识为static的字段、方法、属性、构造函数、事件,就是静态成员。 静态成员将被类的所有实例共享,所有实例都访问同一内存位置。静态成员和实例成员在内存中被分开保存。 静态成员可直接通过类名访问,没有实例也可以访问。 静态函数不能访问实例成员,仅能访问其他静态成员。

静态构造函数:

静态构造函数用于初始化静态字段。 在引用任何静态成员之前,和创建任何实例之前调用。 与类同名,使用static,无参数,无访问修饰符

1
2
3
4
5
class Dog{
static Dog(){
num=0;
}
}

②静态类

如果类只包含静态的方法和属性,并标识为static 静态类不能创建实例不能被继承 可以为静态类定义一个静态构造函数 静态类的作用: 1.作为基础类库,储存很多信息 2.作为扩展方法: 在不知晓源代码、密闭类不能派生时,就可以使用静态类作为拓展方法。 但是拓展方法需要指明对象(可在未实例化之前)。 如:

1
2
3
4
5
6
7
8
9
10
11
12
13
static class Write{
public static void Writepaper(this Pen pencil){...}
}

class Pen{...}
class Program
{
static void Main(string[] args)
{
Pen pencil=new Pen();
pencil.Writepaper()//就像Pen类中包含Writepaper方法一样,可直接被调用
}
}

注意:

扩展方法所属的类必须是static类 拓展方法本身必须是static方法 拓展方法的第一个参数类型,必须是this+类名