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

很简单关于 C# 的属性的问题, 高手来看看
namespace CSCnsl
{
    public class Property
    {

    }
  public class User
  {                 
        public Property P
        {                
            get { return P; }
            set  { P = value; }
        }            
  }
  class Program
  {
      static void Main(string[] args)
      {
        User  user = new User ();
          //只要一给user的p属性赋值就抛下面异常,我不知道怎么改,才能不抛异常
        user.P =null; //这里总是 StactOverFlow 但我不知道为什么,请修改下代码,让他能正常运行
      }
  }
}

------解决方案--------------------

  public class User
  {          
       private Property _P
        public Property P
        {                
            get { return _P; }
            set  { _P = value; }
        }            
  }

------解决方案--------------------
你之前的代码,属性在得到赋值的指令后不停的给自己赋值。。
自然就死循环了。
------解决方案--------------------
引用:
请帮修改下代码,顺便讲下为什么抛异常

你没发现那个P的get方法里面,返回了自己,自己再调用自己的get方法,无限自我调用,没有停止的时候了。
------解决方案--------------------
public Property P
        {                
            get;
            set;
        }     
这样就可以了