细说static关键词

    static中文之意为“静态的,不变化的。被static修饰的成员将被标记为静态成员,它属于类别,是该类别所有实例的共有成员,在该类别的范畴内可以说是全局的,所以必须初始化。而非静态成员属于类别的执行个体,归每个具体的对象所专有。C#严格规定了静态成员只能通过类来获取,非静态成员只能通过对象来获取,这一点和c++static成员获取是不一样的。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。我们通常使用静态成员来表示不会随对象状态的变化而发生变化的数据或计算。

  • 标记为static的静态类,只能包含静态成员。它是密封的,不能被实例化和继承,不能包含实例构造函数,只可以通过静态构造函数来分配初始值信息。当一个类中没有依赖对象标识的数据或行为时,就可以将其定义为静态类。
  • 在静态属性或方法中,只能访问static变量,也只能调用其它的static方法,不能使用this变量,不能引用任何实例成员,但是可以在方法体中使用new关键词来实例化一个对象来调用。
    • 静态构造函数为类所私有,不能再添加修饰符和使用参数。值得注意的是类的静态构造函数在程序域中至多执行一次,只有在创建类的实例或者引用类的任一个静态成员时才会激发静态构造函数,而且它在创建类的第一个实例之前调用。常用于对静态字段、只读字段等的初始化。
    • const 变量和 static readonly 变量,它们都表示不能被修改的常量。 const 变量是编译时常量,声明时就必须初始化,编译期所有变量引用将被实际值所替换,它即可以修饰类成员也可以修饰局部成员。而 static readonly 变量是运行时常量,可在声明时也可在构造函数中进行初始化,只能修饰类成员。对于引用类型的常量, const 变量的值只能是 string null static readonly 变量可以是任何类型。如果重定义了某个 const 变量的值,则需要重新编译客户端程序方可生效,而 static readonly 变量值发生改变则无需重新编译客户端程序,这是二者很重要的一点区别。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值