C#静态类
C# 中有很多静态类的例子,例如 Console 类就是一个静态类。
如果希望构建一个 helper 工具类,考虑使用静态类。
原因是:helper 工具类会使用频繁,如果是非静态的,则每次使用都要在堆上分配空间。
如果是做成静态类,则只需要一次分配空间,之后,该类就永远驻留在加载堆上,这样既省空间又省时间。
static 关键字只能用于类而不能用于结构,这是因为 CLR 永远允许值类型实例化。
类型中的静态成员(字段和属性)是全局的,属于这个类型。如果这个类型有多个实例,则它们共享其中的静态成员(即一个实例更改了该静态变量的值,所有其他实例都会受到影响)。
静态类和实例类的静态成员驻留在加载堆中,不受 GC 控制。
静态类中的所有方法必须都是静态方法,所有成员(字段或属性)必须都是静态的。
静态类的使用不需要新建实例。静态类直接从 System.Object 派生。
静态类的主要功能如下:
因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。
使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。
静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。
如果希望构建一个 helper 工具类,考虑使用静态类。
原因是:helper 工具类会使用频繁,如果是非静态的,则每次使用都要在堆上分配空间。
如果是做成静态类,则只需要一次分配空间,之后,该类就永远驻留在加载堆上,这样既省空间又省时间。
static 关键字只能用于类而不能用于结构,这是因为 CLR 永远允许值类型实例化。
类型中的静态成员(字段和属性)是全局的,属于这个类型。如果这个类型有多个实例,则它们共享其中的静态成员(即一个实例更改了该静态变量的值,所有其他实例都会受到影响)。
静态类和实例类的静态成员驻留在加载堆中,不受 GC 控制。
静态类中的所有方法必须都是静态方法,所有成员(字段或属性)必须都是静态的。
静态类的使用不需要新建实例。静态类直接从 System.Object 派生。
静态类的主要功能如下:
- 仅包含静态成员,函数成员和变量都必须有 static 修饰。
- 不能被实例化。
- 是密封的,编译器编译时自动生成 sealed 标记。
- 不能包含实例构造函数。
因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。
使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。
静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算