class Program
    {
        static void Main(string[] args)
        {
            MyClass m = new MyClass(null);
            Console.WriteLine(m.Name);
            Console.ReadKey();
        }        
    }
    class MyClass 
    {
        public MyClass(string name)
        {
            this.Name = name;
        }
        public string Name 
        {
            get 
            {
                return this.Name; 
            }
            private set 
            {
               this.Name = value;
            }
        }        当嵌套的方法调用过多而导致执行堆栈溢出时,将引发 StackOverflowException 异常。
相关提示
--------------------------------------------------------------------------------
确保您没有无限循环或无限递归。
过多的方法调用通常意味着存在非常深的递归或无限递归。 

解决方案 »

  1.   

    代码有问题,得这么写:    class MyClass 
        {
            public MyClass(string name)
            {
                this.Name = name;
            }
            private string _name = "";
            public string Name 
            {
                get 
                {
                    return _name; 
                }
                private set 
                {
                   _name = value;
                }
            } 
          }
      

  2.   

    你不能在get、set里面再访问这个属性,否则就会无限递归调用了,这和你这么写是一样的:int foo()
    {
        return foo();
    }
      

  3.   

    要写属性就必须再定义一个变量吗?
    C# 里的简单属性 public string Name { get; private set; }怎么不用啊..
      

  4.   


    CSDN 有BUG哎 ╮(╯▽╰)╭  没有权限屏幕只灰了一半...还能发帖....