【C#】static关键字对于类,变量,方法,构造函数的详细用法和规则

static静态的,不变的,在某个类中只有一个,不会因实例化对象的不同而不同。static可以修饰类、字段、属性、方法等。如一个方法前加上static修饰后要对其进行调用可以直接通过类名点出来,不用再对类进行实例化。

一、静态类
1.只能包含静态成员(静态方法或静态变量),非静态成员是不能使用的,而非静态类可以包含静态的方法、字段、属性或事件,且无论对这个非静态类创建多少个实例,它的静态成员都只有一个。
2.不能对其实例化。
3.不能被继承,因为静态类本质是一个抽象的密封类。
4.不能包含实例构造函数。

二、静态变量
1.static只能修饰成员变量,不能修饰局部变量。
2.表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值。
3.静态变量一直记录变量的值,一直到下次赋值时。
4.不同线程下访问的静态属性总是同一属性,如果某一线程更改了属性值,将造成其他线程访问属性值的错误。因此方法中访问同一静态属性就需要使用lock关键字,或创建互斥对象来保持静态属性在同一时间只能被某一对象的属性或方法访问。
5.静态成员只被创建一次,所以静态成员只有一份,而实例成员有多少个对象,就有多少个成员。

三、静态方法
1.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有。
2.在静态方法中只能直接调用同类中其他的静态成员(包括变量和方法), 而不能直接访问类中的非静态成员。
3.每一个线程在同一时间访问的静态方法都是不同的,因此静态方法在多线程调用中不会产生冲突。
4.在静态方法中不能直接调用实例成员,因为静态方法被调用时,对象还有可能不存在。
5.this/base关键字在静态方法不能使用,因为有可能对象还不存在。
6.静态方法只能被重载,不能被重写,因为静态方法不属于类的实例成员。

四、静态构造函数
1.静态类可以有静态构造函数,静态构造函数不可继承。
2.可以用于静态类,也可用于非静态类。
3.无访问修饰符、无参数,只有一个static标志。
4.不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。

什么时候适合用static修饰?
1.当变量需要被共享时可以将变量定义为静态变量。
2.当方法需要被反复调用时可以将方法定义为静态方法。
3.当一个类中包含的成员都是静态时可以将类定义为静态类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值