常量与static readonly字段有着相同之处,那它们又有区别与联系呢?
const常量在声明处进行初始化,编译时直接将值编译进元数据,运行时不能进行值更改(如下面代码中的PAI)。
实例字段可在定义处和构造函数内进行初始化。可在任意处进行更改,如果其可访问性允许(如下面代码中的radius)。
static 字段声明为类级的字段,它属于类的状态数据。可在任意处进行更改,如果其可访问性允许(如下面代码中的a)。
readonly 字段声明只读字段,只能在构造函数内对其进行更改(如下面代码中的b)。
static readonly 字段声明静态只读字段,它属于类级且只读。只能在静态构造函数内对其更改(如下面代码中的c)。
示例代码:
View Code
public class Code_03 { public const double PAI = 3.14; double radius = 20; static int a = 10; readonly int b = 0; static readonly int c = 30; static Code_03() { a = 100; c = 1000; //错误 非静态的字段、方法或属性“ConsoleApp.Example03.Code_03.c”要求对象引用 //radius = 1; //b = -1; } public Code_03() { radius = 1; a = -1; b = -1; //错误 无法对静态只读字段赋值(静态构造函数或变量初始值中除外) //c = -1; } public void MyMethod() { radius = 1; a = -1; //错误 无法对静态只读字段赋值(静态构造函数或变量初始值中除外) //b = -1; //c = -1; } }


浙公网安备 33010602011771号