2016-01-08 10 views
-1

Так как я хотел научиться программированию на C# немного, я только начал с нормальным консольным приложением whichs код вы можете увидеть здесь (Это довольно большой файл):пользовательского экземпляр класса создания StackOverflowException

http://pastebin.com/GnwBMwdt

ошибка occurres только тогда, когда я называю MenuEntrys start = new MenuEntrys("StartGame");

Как ошибка Это просто печатает Process is terminated due to StackOverflowException. и «Программа больше не работает» окно. Кто-нибудь знает решение? Заранее спасибо

+0

какая ошибка вы получаете? Обязательно укажите всю информацию при размещении вопроса. – swinkel

+2

Проблема заключается в свойстве 'selected'. Его зовут в геттер и сеттер. –

+0

Майк прав, просто используйте стандартный get; set; или вам нужно создать переменную в своем приложении для хранения значения (вместо использования selected = value и т. д.) – swinkel

ответ

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; } 
+0

Вот и все! Спасибо. – Splinti

Смежные вопросы