比较const ,readonly, stitac readonly

比较const ,readonly, stitac readonly:

  1. constreadonly的值一旦初始化则都不再可以改写;
  2. const必须在声明时初始化;readonly既可以在声明时初始化也可以在构造器中初始化,因为见4;
  3. const隐含static,不可以再写static constreadonly则不默认static,如需要可以写static readonly
  4. const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值);readonly则是运行期动态解析的常量,static readonly字面就是实例时赋值
  5. const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员。
  6. const访问必须以"Classname.VariableName"方式访问,而readonly访问必须以"InstanceName.VariableName"方式访问。

代码说明问题

  const关键字

class ConstantEx
    {
        public const int number =3;
    }

    class Program
    {
        static void Main(string[] args)
        {
            //如果这里使用 ConstantEx.number=10 会出错,在整个app内该值不可改变
            Console.WriteLine(ConstantEx.number);// 类名+常量访问
            Console.ReadLine();
        }
    }

  readonly关键字

class ReadOnlyEx
    {
       //说明该值可以在运行时改变,即在实例化时改变该值
        public readonly int number = 10;
        public ReadOnlyEx()
        {
            number =20;
        }
        public ReadOnlyEx(bool IsDifferentInstance)
        {
            number = 100;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //必须实例化后访问
            ReadOnlyEx readOnlyInstance = new ReadOnlyEx();
            Console.WriteLine(readOnlyInstance.number);

            ReadOnlyEx differentInstance = new ReadOnlyEx(true);
            Console.WriteLine(differentInstance.number);

            Console.ReadLine();
        }
    }
posted @ 2013-09-15 15:01  张放春  阅读(398)  评论(0编辑  收藏  举报