C# 类型为';的未处理异常;System.StackOverflowException';发生
我收到错误在我的代码中Forte Sender.exe中发生类型为“System.StackOverflowException”的未处理异常。我理解这意味着在我的代码中有一个无限循环,但我似乎找不到这个循环。这是我的密码: 表格1:C# 类型为';的未处理异常;System.StackOverflowException';发生,c#,C#,我收到错误在我的代码中Forte Sender.exe中发生类型为“System.StackOverflowException”的未处理异常。我理解这意味着在我的代码中有一个无限循环,但我似乎找不到这个循环。这是我的密码: 表格1: public partial class MainBox : Form { //Making a name for the ApplicationProperties form. It can be opened when called. Appli
public partial class MainBox : Form
{
//Making a name for the ApplicationProperties form. It can be opened when called.
ApplicationProperties ApplicationPropertiesWindow = new ApplicationProperties();
//All of the functions for form1 below.
表格2:
public partial class ApplicationProperties : Form
{
MainBox MainBoxWindow = new MainBox();
//All of the funcitons for form2 below.
所以我注意到如果我取出
MainBox MainBoxWindow=newmainbox()代码>程序将正确运行。但我需要那个实例来调用Form1中的函数。我怎样才能避开这个问题?调用函数或解决无限循环的不同方法。好的,MainBox
创建一个ApplicationProperties
,然后创建一个MainBox
,创建一个ApplicationProperties
,依此类推。显然你需要打破这个循环
由于您的代码目前处于运行状态,您可能希望删除属性表单的newmainbox()
,然后将其插入,例如:
ApplicationProperties ApplicationPropertiesWindow = new ApplicationProperties();
ApplicationPropertiesWindow.MainBoxWindow = this;
及
嗯,您的MainBox
创建了一个ApplicationProperties
,这反过来又创建了一个MainBox
,它创建了一个ApplicationProperties
,依此类推。显然你需要打破这个循环
由于您的代码目前处于运行状态,您可能希望删除属性表单的newmainbox()
,然后将其插入,例如:
ApplicationProperties ApplicationPropertiesWindow = new ApplicationProperties();
ApplicationPropertiesWindow.MainBoxWindow = this;
及
你只需打开一个表单,它就会从它的构造函数中打开另一个表单,然后在t的构造函数中再次打开第一个表单,以此类推
创建实例时,字段初始值设定项在构造函数之前执行。您只需打开一个表单,它就会从构造函数中打开另一个表单,然后在t的构造函数中再次打开第一个表单,依此类推
创建实例时,字段初始值设定项在构造函数之前执行。您的ApplicationProperties
类创建一个MainBox
对象,而MainBox
对象创建一个ApplicationProperties
对象。这是循环。对new
的每次调用都是该循环中的另一个构造函数调用。构造函数以称为相互递归的方式相互调用,这会导致堆栈溢出。您的ApplicationProperties
类创建一个MainBox
对象,而MainBox
对象创建一个ApplicationProperties
对象。这是循环。对new
的每次调用都是该循环中的另一个构造函数调用。构造函数在术语上相互调用,称为相互递归,这将导致堆栈溢出。您正在ApplicationProperties
内部创建MainBox
和ApplicationProperties
内部MainBox
这将继续创建实例,从而产生StackOverFlowException
为了避免这种情况,您可以在OnLoad
overrided方法中创建实例,但是创建相互关联的实例没有意义,您是想使用相同的引用吗?您正在创建MainBox
内部ApplicationProperties
和ApplicationProperties
内部MainBox
这将继续创建实例,从而产生StackOverFlowException
为了避免这种情况,您可以在OnLoad
overrided方法中创建实例,但是创建相互关联的实例是没有意义的,您的意思是使用相同的引用吗?答案解释得很好,谢谢。这对我来说很好。非常好的解释了答案,谢谢。这对我来说太棒了。