常量 readonly字段

常量 :   

  • 用const关键字  必须放在类型的前面
  • 声明时必须初始化,初始化值在编译时决定,值多为预定义简单类型或又预定义类型组成的表达式,可以为null引用,但不能为其他对象的引用,因为常量的值必须在编译时决定,而对象的引用在运行时决定
  • 初始化之后值不能改变
  • 常量没有自己的存储位置,在编译时,由编译器替换

本地常量  作用于在所属的块内

成员常量  对所有类的实例可见,即使没有类的实例,也可用类名加点常量名来使用常量

readonly字段  

  • 可以先声明后初始化,但必须在构造函数中初始化,若为静态的,则必须在静态构造函数中初始化
  • 可以在编译时决定,也可以在运行时决定,可以是实例字段,也可以是静态字段

             (实例字段,跟类的实例相关联,必须有类的实例才能使用,而静态字段可以通过类名加点直接使用

               实例字段在运行时才分配内存,而静态字段在封装程序集的,即编译时候已经分配了内存

              )

  • 在内存中有存储位置            

转载于:https://www.cnblogs.com/NoteofEveryDay/archive/2012/10/14/2723343.html

在C#中,常量字段(Constant Field)是一种特殊的字段,其值在编译时就已经确定,并且在程序运行期间不能更改。常量字段通常用于表示不会变化的固定值,例如数学常数、系统配置参数等。 ### 常量字段的定义 常量字段使用 `const` 关键字进行声明,并且必须在声明时赋值。常量字段的类型可以是内置的数值类型(如 `int`, `double`)、字符串类型 `string`,或者枚举类型等。常量字段的值必须是一个编译时常量表达式。 示例: ```csharp public class Constants { public const int MaxValue = 100; public const double Pi = 3.14159; public const string ApplicationName = "MyApp"; } ``` ### 常量字段的使用 常量字段的访问方式与静态字段类似,可以通过类名直接访问,而不需要创建类的实例。 示例: ```csharp Console.WriteLine(Constants.MaxValue); // 输出: 100 Console.WriteLine(Constants.Pi); // 输出: 3.14159 Console.WriteLine(Constants.ApplicationName); // 输出: MyApp ``` 由于常量字段的值在编译时就已经确定,因此它们的行为类似于静态字段,但不需要使用 `static` 关键字[^1]。 ### 常量字段与静态字段的区别 - **常量字段**(`const`):值在编译时确定,不能更改,隐式静态。 - **静态字段**(`static`):值在运行时确定,可以通过静态构造函数或直接赋值进行初始化,可以更改(除非使用 `readonly` 修饰符)。 ### 常量字段的适用场景 - 需要表示在程序运行期间始终不变的值。 - 多个类或模块需要共享的固定值。 - 提高代码可读性,例如定义魔法数字或字符串的替代常量。 ### 注意事项 - 常量字段的值必须是编译时常量表达式,不能依赖运行时才能确定的值。 - 常量字段一旦定义,在程序的任何地方都不能更改其值。 - 常量字段适用于简单的类型,如 `int`, `double`, `string` 等,不适用于复杂对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值