【静态类】
- 非静态类使用完成后系统会自动销毁释放,所以非静态类相对来说比较安全,而静态类是在程序结束后销毁的,在销毁前一直驻留在内存中,因此出现错误的可能性会大些。静态方法效率上要比实例化高。
- 静态类能提高调用的性能,比如DBHelp类和业务逻辑层的类基本上都使用静态类。
- 一般工具类库都为静态类。
- 大型项目少用静态类,减少占内存。
- 经常使用的类型,用静态类。提高加载效率。
- 静态类的基本特点:https://q.cnblogs.com/q/17898/
静态类的主要功能如下:
○它们仅包含静态成员。
○它们不能被实例化。
○它们是密封的。
○它们不能包含实例构造函数(C# 编程指南)。
因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。
使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。
静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。
7、静态类的成员都是静态的。
【静态字段(变量)】
- 静态字段在装载程序集的时候就分配内存空间,而非静态字段要在实例初化时候才分配内存空间。
- 当不存在 static 修饰符时,由该声明引入的字段为实例字段(实例变量)。静态字段不属于某个特定的实例;相反,它只标识了一个存储位置。不管创建了多少个类实例,对于关联的应用程序域来说,在任何时候静态字段都只会有一个副本。
- 静态字段被类的所以实例共享,所有实例都访问同一内存位置。如果该内存位置的值被一个实例改变了,则这种改变对所有的实例都可见。
【静态属性】
- 实例不能访问静态属性,但可以访问静态方法。
- 类名可以直接访问类内的静态属性,即 类名.静态属性 有效,不用实例化。若非静态属性,则不能直接访问。见第四章 程序StaticDataAndMembers。
- 属性的作用就是保护字段的,对字段的赋值和取值进行限制。属性的本质是由两个方法组成的,get()、set()方法;属性始终不存值,在实际应用中操作属性而不直接操作字段,但实际上最终还是操作了字段(字段被赋值和从字段取值),字段用private修饰,属性一般用public修饰,他们是成对出现的。
【静态方法】https://blog.csdn.net/zxcvbnm32123/article/details/9429269
- 对类(或方法):对类或方法)应用 static 关键字,则该类或方法)的所有成员都必须是静态的。
- 静态的方法就在在程序启动的时候,系统自己建立一个该方法的实例在内存里面,不需要我们在手动去实例该方法,可以直接调用(但是类的实例不能访问类的静态方法,因为静态方法本身就是一个实例了,不需要再次实例,直接访问即可)。还有就是该实例会在内存中占一定的内存空间,这个内存空间只要程序不退出就会一直占用,所以在内存比较小的时候尽量少用静态方法。
- 如果做invoke 或者是跨线程的处理,还有API的DLLIMPORT最好用静态的。
- 非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
- .静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
- 静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.
- 静态的不可被继承,它既不能实例化,也就是防止继承。不能使用抽象或虚的方法进行扩展和多态