自定义类实例创建StackOverflowException

时间:2016-01-08 20:53:34

标签: c#

由于我想学习一些C#编程,我刚开始使用一个普通的控制台应用程序,你可以在这里找到代码(这是一个非常大的文件):

http://pastebin.com/GnwBMwdt

只有在我拨打MenuEntrys start = new MenuEntrys("StartGame");

时才会出现错误

错误它只是打印Process is terminated due to StackOverflowException. 并且“程序不再起作用”窗口。 有人知道解决方案吗? 提前致谢

1 个答案:

答案 0 :(得分:4)

您的属性selected是自引用的,这会导致无限循环。

使用属性时,他们需要引用一个单独的(通常是私有的)字段。

所以,而不是:

public bool selected
{
    get { return selected; }
    set { selected = value; }
}

您可以将其更改为:

private bool _selected
public bool Selected
{
    get { return _selected; }
    set { _selected = value; }
}

但是,如果您在获取或设置值时没有任何特定逻辑,则可以使用Auto Property。这为您节省了几行代码。

public bool Selected { get; set; }