C# 常量
C# 常量
常量
C#中定义常量的方式有两种,一种叫做静态常量,用const关键字修饰。另一种叫做动态常量,用readonly关键字修饰。
静态常量
用const关键字修饰,写法如下:
1 public const int num = 10;
常量一旦声明,其值不允许更改。就算可以更改常量的值,那么更改也没有任何的意义。因为在编译的时候,在使用常量的地方就已经被常量的值代替了,而更改常量的代码要在运行的时候才会生效。编译在前,运行在后。
C#编译器在编译的时候,将声明常量的那句话省略掉了,并且在使用常量的地方,直接使用常量的值代替。因为在运行时没有与常量关联的变量地址,所以const字段不能通过引用传递。
动态常量
用readonly关键字修饰,写法如下:
1 public readonly string name = "Jack";
只读字段是属于对象的成员,所以在创建对象的时候,仍然会创建只读字段。
只读字段的值一旦声明就无法改变。除了在我们的构造函数中。
readonly只能修饰字段,不能修饰局部变量。
关于静态常量的几个小细节
- 声明静态常量的同时必须为常量赋值
- 为静态常量赋值不能有变量参与,因为常量的值要求在编译的时候就能确定,而变量的值要在运行的时候才可以确定。
- 常量可以是局部变量,也可以是成员变量。 当常量是成员变量的时候,通过类名直接点出来访问。
- 类 类型的变量是可以为const的。但是该变量的值只能是null而不能给它new1个对象。因为常量的值要求在编译的时候确定,如果new的话要在运行起来才能new。
PS:常量是不属于对象的。在创建对象的时候,对象里是不会有常量的。所以常量不能通过对象名点出来访问。只能通过类名点出来访问。