总结一下常量和只读字段的区别:
一.值的区别:
常量(const):是已知的,不能修改的值。const都是静态的,不能使用static修饰。
只读字段(readonly):不能修改的,只读字段的值不能在编译时确定,而是在运行时确定的。
readonly可以用static修饰,也可以不用。
二.赋值方法区别:
常量(const):只能在声明时赋值,常量的值在编译时就已经确定,在程序中不能改变。
只读字段(readonly):只读字段可以在声明时或者在构造函数内赋值。只读字段可以是静态字段(一个类只有一个值),也可以是实例字段(每一个实例有自己的值)。
值的区别:
例:只读字段
class MyClass
{
public readonly int r=10;
public MyClass(int a)
{ r=a; }
}
以下的常量赋值是不合理的
class MyClass
{
public const int r=10;
static void Main(string[] args)
{
MyClass c1=new MyClass();
int r1=c1.r ;
}
}
值的引用(是否静态):
只读字段
class MyClass
{
public readonly int r=10;
static void Main(string[] args)
{
MyClass c1=new MyClass();
int r1=c1.r ;
}
}
常量:
class MyClass
{
public const int r=10;
static void Main(string[] args)
{
int r1= MyClass.r ;
}
}