C#语法——const vs readonly

来源:互联网 发布:vj软件resolume 编辑:程序博客网 时间:2024/06/07 23:00

const和readonly的比较,是困扰我很久的一个问题,正好有空就专门抽空看了看(真的打算细看的时候才发现这么简单),也正好试用下Markdown的语法,谁成想写着写着就成了MSDN的翻译文章(甚至都不算是翻译,只是整理),自罚一杯…

来自MSDN的比较

MSDN的解释
1. 都是C#中的关键字(访问修饰符);
2. 被const修饰的字段,必须在初始化的时候赋值;(编译时变现出的常量状态)
3. 被readonly修饰的字段,即可以在初始化的时候赋值,也可以在声明字段的类的构造函数中赋值;(运行时表现出的常量状态)

来自MSDN的示例

1.const示例

public class ConstTest {    class SampleClass     {        public int x;        public int y;        public const int c1 = 5;        public const int c2 = c1 + 5;        public SampleClass(int p1, int p2)         {            x = p1;             y = p2;        }    }    static void Main()     {        SampleClass mC = new SampleClass(11, 22);           Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);        Console.WriteLine("c1 = {0}, c2 = {1}",                           SampleClass.c1, SampleClass.c2 );    }}/* Output    x = 11, y = 22    c1 = 5, c2 = 10 */

2.readonly示例

public class ReadOnlyTest{   class SampleClass   {      public int x;      // Initialize a readonly field      public readonly int y = 25;      public readonly int z;      public SampleClass()      {         // Initialize a readonly instance field         z = 24;      }      public SampleClass(int p1, int p2, int p3)      {         x = p1;         y = p2;         z = p3;      }   }   static void Main()   {      SampleClass p1 = new SampleClass(11, 21, 32);   // OK      Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z);      SampleClass p2 = new SampleClass();      p2.x = 55;   // OK      Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z);   }}/* Output:    p1: x=11, y=21, z=32    p2: x=55, y=25, z=24*/

本博文参考

来自MSDN的解释
其它博文

1 0
原创粉丝点击