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

基本的value的问题
进行.NET类库引用的时候
在被引用的cat:animal 类中设置了如下属性:
  private int _weight;
  public int Weight
  {
  get 
  {
  return this._weight ;
  }
  set 
  {
  if(this._weight <=0)
  Console .WriteLine ("cow {0} is eating", this.Name);
  this._weight = value;
  }
  }
在主函数中创建对象后,无论设置acat.Weight =10; acat.Weight =-10;
执行时一直是会显示The cat's weight can't less than zero! 
为什么?
在给'_weight'设置初值后无论输入正负值都根据初值判断是否显示cow {0} is eating 与新设置的值无关,为什么?是创建对象时构造函数执行了默认值,设置数值时没有执行?
[b][size=18px]还有谁可以解释下set语句中value执行过程,是在搞不懂是先用value赋值还是先判断条件又或是先把默认值赋给Weight[/size][/b]

------解决方案--------------------
int 初始化是 0

------解决方案--------------------
是在哪里给weight赋值的?
------解决方案--------------------
C# code

        private int _weight;
        public int Weight
        {
            get
            {
                return this._weight;
            }
            set
            {
                if (value <= 0)
                    Console.WriteLine("cow {0} is eating", this.Name);
                else
                    this._weight = value;
            }
        }

------解决方案--------------------
int 类型的变量需要初始化

------解决方案--------------------
初始化下int类型的属性 private int _weight=0;
if(this._weight <=0)
{
Console .WriteLine ( "cow {0} is eating ", this.Name);
}
else
{
this._weight = value;
}

------解决方案--------------------
同问啊,if(this.weight<=0)这里的weight用的是初始默认值而不是输入的值吗
------解决方案--------------------
探讨

同问啊,if(this.weight<=0)这里的weight用的是初始默认值而不是输入的值吗