【C#】readonly关键字

【正文目录】

1. 核心内容

2. 注意点

3. readonly与const

【正文内容】

1. 核心内容

    readonly关键字修饰的字段只能作为声明的一部分,或者出现在同一类的构造函数

     以官方例子而言,字段year的只无法再ChangeYear方法中更改,即便已经在该类的构造函数中为它赋过值:

    class Age
    {
        readonly int _year;
        Age(int year)
        {
            _year = year;
        }
        void ChangeYear()
        {
            _year = 1967;     // 无法通过编译
        }
    }

2. 注意点

    只能在下列上下文中对 readonly 字段进行赋值:

    (1) 当在声明中初始化变量时,例如:

       private readonly int MAX_VALUE = 1024;

    (2) 对于实例字段,在包含字段声明的类的实例构造函数中;对于静态字段,在包含字段声明的类的静态构造函数中。

           只有在这些上下文中,将 readonly 字段作为 outref 参数传递才有效。

3. readonlyconst

    (1) const 字段只能在该字段的声明中初始化。

    (2) readonly 字段可以在声明构造函数中初始化。

    (3) 根据所使用的构造函数,readonly 字段可能具有不同的值

    (4) const 字段为编译时常数,而 readonly 字段可用于运行时常数。例如:

        private static readonly uint lticks = (uint)DateTime.Now.Ticks;

【参考地址】

MSDN:

 http://msdn.microsoft.com/zh-cn/library/acdd6hb7%28v=vs.80%29.aspx

posted @ 2011-05-04 09:41  玄黄道长  阅读(506)  评论(0编辑  收藏  举报