日期:2014-05-17  浏览次数:20806 次

请问readonly变量怎么设置set属性?
比如
class Program
{
     public  readonly int a;

     public int A
     {
          get
          {
             return a;
           }  
          set
          {
             if(value<=0)
             a = value;
           }
      }
}

比如这样的一段代码,我想为这个readonly变量设置属性,不过readonly不是除了在构造函数以外无法赋值吗?
想请问一下,我应该怎么设置这样的属性,谢谢
readonly设置属性

------解决方案--------------------
引用:
Quote: 引用:

你以上的代码在vs中编译后,会出现:无法对只读的字段赋值(构造函数或变量初始值指定项中除外)的错误。
很显然,作为只读的变量,不应该再set值,这是相互矛盾的。
那如果想设置范围应该怎么办?

在vs中,在public  readonly int a;后面,按ctrl+r+e,会有提示,你会发现vs自动生成的代码当中,只有get,没有set。readonly是只读的,不能修改的,它就是一个固定的值,为什么要设置范围呢?
------解决方案--------------------
反射可破。
readonly 字段 是 initonly.使用反射可以不用限制在构造时候赋值