您的当前位置:首页正文

C# 基础二 静态与非静态的区别

2024-11-23 来源:个人技术集锦

1 静态与静态的区别

 2 静态类与非静态类

1.静态类只包括静态成员

2.静态类本质是一个抽象的密封类,不能被实例化,不能被继承

3 不能包含实例构造函数

3 静态成员与非静态成员

  1. 静态成员属于类所有,为各个类的实例公园,非静态成员属于实例所有

  2. 无论创建多少实例,类的静态成员在内存中只占同一块区域。非静态成员,在每次创建一个类的实例时,都会在内存中为非静态成员新分配一块存储

4 静态函数与非静态函数

  1. 静态方法属于类所有,在类实例化之前可使用
  2. 非静态方法可以访问类中任何成员,静态方法只能访问类中的静态成员(说明:因为静态方法在类实例化之前就可以使用,而类中的非静态成员只有在实例化之后才会分配内存,这样在调用静态函数时如果访问非静态成员找不到内存地址)
  3. 静态函数采用 类名.静态函数名的方式调用

  4. 静态函数中只能出现静态成员和静态成员函数,而且不能使用this关键字

  5. 静态方法只能被重载,不能被重写,因为静态方法不属于类的实例成员

  6. 静态方法不能直接调用非静态方法,可以通过创建一个类的实例,然后通过这一特定的对象来调用静态方法

5 静态构造函数

  1.  静态类可以有静态构造函数,静态构造函数不可以被继承
  2. 静态构造函数可以用于静态类,也可以用于非静态类
  3. 静态构造函数无访问修饰符、无参数,只有一个 static 标志。
  4. 静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。

优缺点:

静态函数效率比非静态函数高

非静态函数在实例化时自行销毁内存,静态函数不自行进行销毁

静态函数和静态成员创建后只使用同一块内存,但是实例化的方式会创建多个内存

使用静态函数需要保证不会产生并发

1.静态与非静态的使用

  1. 如果一个类下面的所有成员都需要被共享,就可以使用静态类

  2. 变量需要被共享,方法需要被反复调用的时候,就可以把这些成员定义为静态成员

  3. 经常调用就用静态的,相反就用非静态的

显示全文