記録として残しておきたいブログ

主にプログラミングについて書きます。現在は http://tmg0525.hatenadiary.jp/ に書いています。

メモ:C#:StackOverflowExceptionがでた

StackOverflowException ってなに!?!?!?

空メモ: なんでもないコードでStackOverFlowException

上記のサイトをチラッと見た感じでは何回も呼び出されてるってことなのかな?

Aクラスでメンバ変数にMainFormを宣言して、インスタンス作成してた&MainFormのメンバ変数でAクラスを宣言、インスタンス作成してたからグルグル回ってこのエラーが出てきちゃったらしい...

MainFormのほうではメンバ変数としてはAクラスの宣言だけして、Form_LoadのなかでAクラスのインスタンスを作成したらエラーでなくなった!

 

字で書いてもよくわからないので書きます

 

// Class_A.cs

class Class_A
{
private MainForm mainForm = new MainForm();
}

 

①エラー出てしまったとき

// MainForm.cs

public partial class MianForm : Form
{
private Class_A clsA = new Class_A(); // ここでインスタンス作成してるからエラーになった

private void MainForm_Load(object sender, EventArgs e)
{
...
}
}

 

②解決後!

// MainForm.cs

public partial class MianForm : Form
{
private Class_A clsA;

private void MainForm_Load(object sender, EventArgs e)
{
clsA = new Class_A();  // ここならOK!
}
}