C# Static 关键字的总结

本文详细介绍了C#中的`static`关键字,包括静态类的特性、静态构造函数的作用以及静态成员的使用。静态类不可实例化,只能包含静态成员,且在程序启动时初始化。静态成员在类加载时创建,存于静态存储区,适用于共享数据和频繁调用的方法。了解`static`的优缺点和适用场景,有助于优化代码性能。
摘要由CSDN通过智能技术生成

C# Static 关键字的总结

一、static的概述

  • static 修饰符可声明属于类型本身而不是属于特定对象的静态成员

二、静态类

1、特点:
  • 只包含静态成员(静态变量和静态方法)。
  • 静态类无法实例化,即无法使用new 运算符创建类类型的变量
  • 静态类会进行密封,不能继承自任何类(除了Object),也不能被其它类继承
  • 不能包含实例构造函数,但可以包含静态构造函数
2、静态构造函数
  • 用于初始化任何静态数据,或执行仅需执行一次的特定操作
  • 在创建第一个实例或引用任何静态成员之前自动调用
  • 静态构造函数的一种典型用法是在类使用日志文件且将构造函数用于将条目写入到此文件中时使用(本人不太明白)
  • 可对无法在编译时通过类型参数约束检查的类型参数强制执行运行时检查
  • 静态构造函数只调用一次,在程序所驻留的应用程序域的生存期内,静态类会保留在内存中
static class StaticClassA
    {
        static int a;
        static StaticClassA() // 静态构造函数
    {

    }
}
3、优缺点
  • 写在栈中,安全高速稳定,而且在执行的时候,十分优先。

  • 整个静态类型在程序运行期间只加载一次。 这样是对于那些经常使用的类型来说的, 那就不用每次使用前都先加载,效率高些。对那些不常用的类型来说,如果是静态类型,那就要一直占用相当的内存,一直到程序停止。所以应该只对那些常用的类型定义成静态类型。

二、静态成员

1、概述
  • 非静态类可以包含静态方法、字段、属性或事件
  • 静态方法和属性无法在其包含类型中访问非静态字段和事件,它们无法访问任何对象的实例变量,除非在方法参数中显式传递它
  • 静态成员只被创建一次,所以静态成员只有一份,实例成员有多少个对象,就有多少份。
  • 类加载的时候,所有的静态成员就会被创建在“静态存储区”里面,一旦创建直到程序退出,才会被回收。
  • 对静态方法的调用会采用 Microsoft 中间语言 (MSIL) 生成调用指令,而对实例方法的调用会生成 callvirt 指令,该指令还会检查是否存在 null 对象引用。 但是在大多数时候,两者之间的性能差异并不显著
2、优缺点
  • 静态变量在类载入时,就装入内存 ,调用效率会高一点
  • 垃圾回收机制不能回收静态变量,静态类变量会常驻内存
3、使用情况
  • 当变量需要共享时,可以将变量定义为静态变量
  • 当方法需要被反复调用时,可以将方法定义为静态方法

三、参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值