C # StackOverFlowException при создании нового экземпляра класса - PullRequest
0 голосов
/ 30 ноября 2010

Хм, у меня странная проблема. когда я создаю новый экземпляр класса, я получаю StackOverflowExcepion:)

Вот код:

public partial class PlayerChooser : Window
{
public PlayerChooser()
    {
        InitializeComponent();
        textBoxPlayer1Name.Visibility = Visibility.Hidden;
        textBoxPlayer2Name.Visibility = Visibility.Hidden;
        textBoxPlayer3Name.Visibility = Visibility.Hidden;
        textBoxPlayer4Name.Visibility = Visibility.Hidden;

    }

    public static String player1Name;
    public static String player2Name;
    public static String player3Name;
    public static String player4Name;
    ...

    PlayerChooser.player1Name = textBoxPlayer1Name.Text;
    PlayerChooser.player2Name = textBoxPlayer2Name.Text;
    TwoPlayers501_new twoPlayers501_new = new TwoPlayers501_new();
    twoPlayers501_new.Show();
    ...
}

и класс и конструктор, где происходит исключение

public partial class TwoPlayers501_new : Window
{
    public TwoPlayers501_new()
    {
        InitializeComponent();

        textBlockPlayer1Name.Text = PlayerChooser.player1Name;
        textBlockPlayer2Name.Text = PlayerChooser.player2Name;
    }
    ...
}

Спасибо заранее, это, наверное, какая-то мелочь ...

Ответы [ 3 ]

4 голосов
/ 30 ноября 2010

Есть ли у вас обработчик событий, выполняющий действие, которое изменяет одно из этих свойств на основе измененного свойства?

Короткая версия: здесь недостаточно информации для устранения вашей проблемы.

Предложение: отладьте вашу программу, и, когда вы получите исключение stackoverflow, проверьте стек вызовов.Я подозреваю, что в вашем стеке есть метод или серия методов, которые бесконечно циклически повторяются.

0 голосов
/ 01 декабря 2010

Хорошо, я узнаю, что, черт возьми, не так с моей программой. Я думаю, что-то пошло не так с компилятором C #. Потому что, когда я удалил подчеркивание из имени класса (теперь TwoPlayers504New), все стало работать правильно.

Большое спасибо Microsoft.

0 голосов
/ 30 ноября 2010

Вы возвращаетесь на себя:

PlayerChooser.player1Name = textBoxPlayer1Name.Text;
PlayerChooser.player2Name = textBoxPlayer2Name.Text;

textBlockPlayer1Name.Text = PlayerChooser.player1Name;
textBlockPlayer2Name.Text = PlayerChooser.player2Name;
...