C#语法——const vs readonly

原创 2016年05月31日 11:11:08

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的解释
其它博文

版权声明:本文为博主原创文章,未经博主允许不得转载。

readonly vs const [C#]

Features: readonly和const都是用来标识常量的[1]。 const可用于修饰class的field或者一个局部变量(local variable);而readonly仅仅用...

c#中const与readonly区别

  • 2013年11月14日 09:34
  • 997B
  • 下载

C#编程中 readonly与const的区别

  • 2010年04月06日 16:57
  • 149KB
  • 下载

C#中的静态常量(const)和动态常量(static和readonly)用法和区别

本文转自:http://hi.baidu.com/mr_handy/blog/item/dcbfcd285b74e8f498250a49.html C#拥有两种不同的常量:静态常量(compile-t...

C#中的readonly跟const用法小结

总结一下常量和只读字段的区别: 一.值的区别: 常量(const):是已知的,不能修改的值。const都是静态的,不能使用static修饰。 只读字段(readonly):不能修改的,只读字段的...

Effective C++ (2) C#中的Const和Readonly

与前一篇Effective C++ (1) C++和C中的Const 对比。 Features: readonly和const都是用来标识常量的[1]。 const可用于修饰class的field...

【C#】Readonly和Const的区别

目录 什么是静态常量(Const)和动态常量(Readonly)静态常量(Const)和动态常量(Readonly)之间的区别动态常量(Readonly)被赋值后不可以改变总结 什么是静态...

C#中的const与readonly的异同

我们知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明...

C#中const和readonly的区别

C#中const和readonly的区别 C#引入了readonly修饰符来表示只读域,const来表示不变常量。顾名思义对只读域不能进行写操作,不变常量不能被修改,这两者到底有...

C#中的static、readonly与const的比较

[csharp] view plaincopy  C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#语法——const vs readonly
举报原因:
原因补充:

(最多只允许输入30个字)