readonly 关键字是一个可在字段上使用的修饰符。 当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
使用 const 关键字来声明某个常量字段或常量局部变量。 常量字段和常量局部变量不是变量并且不能修改,只能在该字段的声明中初始化。常量可以为数字、布尔值、字符串或 null 引用。
readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量。
const为编译时常量,程序编译时将对常量值进行解析,并将所有常量引用替换为相应值。
public static readonly int A = 2; //A为运行时常量
public const int B = 3; //B为编译时常量
下面的表达式:
int C = A + B;
经过编译后与下面的形式等价:
int C = A + 3;
static变量的一个性质:初始化只有一次,但是可以多次赋值;
private void s()
{
static int a=1;//第二次调用 不会初始化
a++;
}
方法第一次调用结束后a在内存内值为2;
方法第一次调用结束后a在内存内值为3;