const是常量,一旦声明就不能更改readonly是变量,声明之后,可以在构造器里面初始化其值

解决方案 »

  1.   

    同意斑竹,
    就是说readonly就好像是CD-R,const是CD-Rom,哈哈~
      

  2.   

    readonly修饰符来表示只读域,
    const来表示不变常量。
    ---
    只读域只能在初始化--声明初始化或构造器初始化--的过程中赋值,
    其他地方不能进行对只读域的赋值操作,否则编译器会报错。
    只读域可以是实例域也可以是静态域。
    只读域的类型可以是C#语言的任何类型。
    ---
    const修饰的常量必须在声明的同时赋值,
    而且要求编译器能够在编译时期计算出这个确定的值。
    const修饰的常量为静态变量,
    不能够为对象所获取。
    const修饰的值的类型也有限制,
    它只能为下列类型之一(或能够转换为下列类型的):
    sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型。
    ---
    当我们需要一个const的常量时,
    但它的类型又限制了它不能在编译时期被计算出确定的值来,
    我们可采取将之声明为static readonly来解决。
    但两者之间还是有一点细微的差别的。
    const修饰的常量是在编译时便被计算出确定的值,并代换到引用该常量的每一个地方,
    而readonly时在运行时才确定的量--只是在初始化后我们不希望它的值再改变。
      

  3.   

    const修饰的值的类型也有限制,
    它只能为下列类型之一(或能够转换为下列类型的):
    sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型不对吧。类也可以为常量类吧。class a
    {}const a a1 = new a();
    这样不行吗?
      

  4.   

    同意斑竹说的
    const是常量,一旦声明就不能更改readonly是变量,声明之后,可以在构造器里面初始化其值,
    并且赋值后就不能在修改其值。
      

  5.   

    to:guoxiny(狼)
    类属于此用类型的呀,此用类型都是可以的:引用类型共分四种类型:
    类,接口,数组,委派。
      

  6.   

    另外,const是编译期间替换的,而readonly static是运行期间引用的。
    例如程序集A1引用了A2的一个const变量C,那么编译期间C的值就会被Copy到A1中。在运行时刻A1并不依赖于A2。而readonly static则相反。