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

1 静态与静态的区别

  1. 有没有static的修饰,有static修饰的就是静态,没有就是非静态 

 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. 经常调用就用静态的,相反就用非静态的

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值