C#中的常量

原文地址:http://www.dingos.cn/index.php?topic=1067.0


【常数】
常数是另一种类型的字段。它保存在编译程序时赋予的值,并且从那之后在任何情况下都不会发生更改。常量:用于在整个程序中将数据保持同一个值。常数是使用 const 关键字声明的;常数可以使代码更容易让人阅读。
语法:const 数据类型 常量名 = 常量值;
const int speedLimit = 55;
const double pi = 3.14159265358979323846264338327950;

【常量命名规则】
  • 带有私有访问修饰符的常量必须以骆驼命名法声明,并以一个下划线开头
  • 带有公共修饰符、受保护修饰符必须以Pascal命名法声明

【常量的注意事项】
  • 对于常量也必须用类的名称来方法,不能用实例对象来访问和Static成员变量类似。
    不允许有该修饰符。
  • 常量必须赋初值。

【const关键字】
const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。
const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";

常数声明的类型指定声明引入的成员类型。常数表达式必须产生具有目标类型或者可隐式转换为目标类型的类型的值。常数表达式是在编译时可被完全计算的表达式。因此,对于引用类型的常数,可能的值只能是 string 和 null。常数声明可以声明多个常数。
public const double x = 1.0, y = 2.0, z = 3.0;

不允许在常数声明中使用 static 修饰符。常数可以参与常数表达式。
public const int c1 = 5;
public const int c2 = c1 + 100;

【readonly关键字】
readonly 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
class Age{
    readonly int _year;
    Age(int year){
        _year = year;
    }
    void ChangeYear(){
        _year = 1967; // Will not compile.
    }
}

只能在下列上下文中对 readonly 字段进行赋值:
1. 当在声明中初始化变量时
public readonly int y = 5;
2. 对于实例字段,在包含字段声明的类的实例构造函数中;或者,对于静态字段,在包含字段声明的类的静态构造函数中。也只有在这些上下文中,将 readonly 字段作为 out 或 ref 参数传递才有效。

readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数。

【readonly与const】
  • const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
  • const 字段为编译时常数,而 readonly 字段可用于运行时常数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜晚回家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值