黑马程序员-Readonly和Const的区别
Const:
常量:在常量初始化声明的时候必须赋值。且不改变。永远不改变。不管多久都不能改变的常量就和圆周率Pi似的.值不能被改变。
1 public class Test 2 { 3 class SampleClass 4 { 5 public int x; 6 public int y; 7 public const int c1 = 5; 8 public const int c2 = c1 + 5; 9 10 public SampleClass(int p1, int p2) 11 { 12 x = p1; 13 y = p2; 14 } 15 } 16 17 static void Main() 18 { 19 SampleClass mC = new SampleClass(11, 22); 20 Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); 21 Console.WriteLine("c1 = {0}, c2 = {1}", 22 SampleClass.c1, SampleClass.c2 ); 23 } 24 }
定义之后,只能使用,不能更改
ReadOnly:
可以在字段上使用的修饰符。 当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
class Test { readonly int _age_year; Test(int age_year} { _age_year=age_year; } public void Test1() { _age_year =2013;//Error } }
readonly 关键字与 const 关键字不同。
const readonly
字段只能在该字段的声明中初始化。 字段可以在声明或构造函数中初始化。
const 字段为编译时常数,而 readonly 字段可用于运行时常数 根据所使用的构造函数,readonly 字段可能具有不同的值。