C#封装-静态成员

本文详细介绍了C#中的静态成员、静态类和静态构造函数。静态成员属于类,不依赖对象即可访问,只有一份且在类首次加载时创建。静态类不能实例化,所有成员均为静态,常用于工具类。静态构造函数在类的静态成员首次访问时自动执行,用于初始化静态变量。了解这些概念对于提升C#编程能力至关重要。
摘要由CSDN通过智能技术生成


一、实例成员

没有被static修饰的成员叫做实例成员。实例成员是属于对象的。通过对象名去访问实例成员。

  • 在创建对象的时候,实例成员跟随着对象一起创建在堆中。
  • 跟着对象一起创建在堆空间中。
  • 有多少个对象,实例成员就有多少份。
  • 对象被回收,这个对象中的实例成员就跟随着一起回收。

二、静态成员

被static修饰的成员,叫做静态成员。静态成员是属于类的。通过类名直接访问。

  • 当类第一次被访问的时候,就会将这个类下面的所有的静态成员创建在内存当中。
  • 静态成员既不在栈也不在堆中。创建在静态存储区。
  • 静态成员只创建一次,在类第一次被访问的时候创建。
  • 静态成员一旦被创建在静态存储区,那么就不会被回收,直到程序结束。
class Person
      {
          //静态成员
         public static int Age;
          //实例成员
         public string Name;
      }
      class Program
      {
         static void Main(string[] args)
         {
             //静态成员属于类,直接通过 类名.静态成员 来访问
             int age = Person.Age;
 
             //实例成员属于对象,需要通过 对象名.实例成员 来访问
             Person p = new Person();
             p.Name = "Jack"; 
         }
     }

三、静态成员特点

  • 只有一份。变量唯一,无论在什么地方访问都是可以访问的
  • 一旦创建在静态存储区,就不会被回收,直到程序结束。

当类第一次被访问的时候,该类下面的所有静态的成员都会被加载。实例成员有多少对象,就会创建多少对象。而静态成员只会在静态存储区中创建一次,直到程序退出时才会被释放。

  • 静态函数中不能使用非静态成员
    成员变量只能将对象实例化出来后 才能点出来使用 不能无中生有
    不能直接使用 非静态成员

  • 非静态函数可以使用静态成员

四、静态成员的作用

静态变量:常用唯一变量的声明,方便别获取的对象声明
静态方法: 常用的唯一的方法声明 比如 相同规则的属性计算相关函数

五、常量和静态变量

const(常量)
相同点:他们都可以通过类名点出来使用
不同点:

  • const必须初始化,不能修改,static没有这个原则
  • const只能修饰变量,static可以修饰很多
  • const一定是卸载访问修饰符后面的,static没有这个要求

例如public const float G = 9.8f;

六、静态类

-概念:类如果被static修饰,那么这个类就叫做静态类。

  • 静态类中的所有成员要求都是静态成员
  • 静态类不能创建对象即不能被实例化。因为没有实例成员,就算可以创建对象,也没有任何的实际意义。
  • 静态类不能有构造函数

作用:
1.将常用的静态成员写在静态类中 方便使用
2.静态类不能被实例化,更能体现工具类的 唯一性

七、静态构造函数

  • 任何类都可以有静态构造函数。
  • 静态构造函数不能有访问修饰符,不能带参数。
  • 静态构造函数不能被手动调用。类的成员第一次被访问的时候,自动执行。
  • 静态构造函数只执行一次,在类的成员第一次被访问的时候自动执行。
static  类名()
          {
           
           }

作用:在静态构造函数中初始化 静态变量

总结

    静态成员变量:使用static关键字修饰的成员变量
    静态成员变量属于类,类被加载时初始化,且只有一份。(饮水机 会议室)
    
    实例成员变量属于对象,在每个对象被创建时(new)初始化,每个对象一份。(杯子 工位)
    特点:存在有先于对象,被所有对象所共享,常驻内存
    
    静态类:使用static关键字修饰的类。
    不能实例化,只能包含静态成员。
    静态类不能被继承,但是静态方法、属性可以被继承
     
     静态构造函数
    初始化类的静态数据成员
    仅在类被加载是执行一次
    不允许使用访问修饰符

    适用性:
    利:单独空间存储,所有对象共享,可直接被类名调用
    弊:静态方法中只能访问静态成员,共享数据被多个对象访问会出现并发。
    适用场合:
    1.所有对象需要共享的数据
    2.在没有对象前就要访问成员
    3.工具类是合作静态类(常用,不需要过多数据)。

转载借鉴网址:https://www.cnblogs.com/chenweifeng/p/4716682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值