【C#菜鸟】关于StackoverflowException异常出错的情况?

问题如下:

为什么会出现这样的异常错误?为什么属性这样写会可能出现无限死循环状态?

图片说明

下面是出错代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _201660728_6._10
{
///
/// 自定义类
///
class Myclass1
{
private int x = 0;
private int y = 0;
///
///加数
///
public int X
{
get { return X; }
set { X = value; }
}

    public int Y
    {
        get { return Y; }
        set { Y = value; }
    }

    /// <summary>
    ///  求和
    /// </summary>
    public int Add1()
    {
        return X + Y;
    }
}
///<summary>
///继承MyClass1
///</summary>

class Myclass2 : Myclass1
{
    private int z = 0;
    ///<summary>
    ///又定义了一个被加数
    ///</summary>
    public int Z
    {
        get { return Z; }
        set { Z = value; }
    }

    ///<summary>
    ///求和
    ///</summary>
    ///<returns>加法运算和</returns>
    public int Add2()
    {
        return X + Y + Z;
    }

}
class Program
{
    static void Main(string[] args)
    {
        Myclass1 myclass1 = new Myclass1();
        Myclass2 myclass2 = new Myclass2();

        myclass1.X = 3;
        myclass1.Y = 4;
        myclass2.X = 5;
        myclass2.Y = 6;
        myclass2.Z = 7;

        Console.WriteLine("Myclass1类:{0}", myclass1.Add1());
        Console.WriteLine("Myclass2调用Myclass1的代码:{0}", myclass2.Add1());
        Console.WriteLine("Myclass2类:{0}", myclass2.Add2());
        Console.ReadLine();

    }
}

}

public int X
{
get { return x; }
set { x = value; }
}
里面的x是小写。

你的X在set的时候调用X=value的时候又递归调用了X的set,一直无限递归下去,最后就栈溢出了