c#中 const static readonly

const

  常量,编译时会将所有引用替换为相应的值。

  测试:

      public const int status_new=1;

      public int GetStatus(){return status_new;} 编译过后用reflector查看,会发现花括号内实际上是 return 1;

static

  静态修饰符,用static修饰的变量是属于类的,所有该类的实例共享该变量。

  测试:

    public class abc
    {
        public static int a;

        public void seta()
        {
            a = 10;
        }

        public int geta()
        {
            return a;
        }
    }
View Code

  现有abc类的两个实例 A、B,在实例A中调用 seta() ,那么再调用 B.geta() 得到的结果是10。

readonly

  只读变量,只能初始化或者在构造函数里赋值。

---------------------------------------------

对于一个订单类 ‘Order’,想用一组值表示 ‘状态’,可以这样:

1、public const int xxxx

2、public static readonly xxxx

3、枚举、其它。。。

问题来了是用1还是2呢,答案是用 static readonly,因为 const 可能带来维护上的问题,例如:程序集A使用了程序集B的常量,当A中常量的值修改后,B是需要重新编译的

---------------------------------------------

结束语:学习设计模式时用到了 ‘订单类’ ,纠结状态该用什么表示,所以有了以上内容!

 

你可能感兴趣的:(c#中 const static readonly)