调试我的c#数组声明时,我得到一个StackOverflowException,如下所示:
public class ConfigClass : MainWindow
{
private const int totalIndex = 3;
public int[][][] Config = new int[totalIndex][][]
{
new int[1][]
{
new int[] {10, 5, 5, 5, 1, 4},
},
new int[9][]
{
new int[] {4, 3, 1, 4, 2},
new int[] {4, 8, 6, 7, 5},
new int[] {2, 2, 4},
new int[] {2, 2, 4},
new int[] {0, 2, 2, 2, 2, 2, 2, 2, 2},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
},
new int[9][]
{
new int[] {4, 1, 2, 3, 4},
new int[] {4, 5, 6, 7, 8},
new int[] {2, 2, 4},
new int[] {2, 2, 4},
new int[] {0, 3, 3, 3, 3, 3, 3, 3, 3},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0},
},
};
}
public partial class MainWindow : Window
{
ConfigClass Core = new ConfigClass();
public DateTime systemDateTime = new DateTime();
public static class ReferenceTo
{
// for group
public const int group_A = 0;
public const int group_B = 1;
public const int group_C = 2;
public const int group_D = 3;
}
public MainWindow()
{
InitializeComponent();
StartSecondTimer();
}
public void UpdateTime()
{
label_systemTime.Content = systemDateTime.ToLongTimeString();
label_systemDate.Content = systemDateTime.ToLongDateString();
}
public void StartSecondTimer() // start one second timebase
{
DispatcherTimer secondTimer = new DispatcherTimer();
secondTimer.Tick += new EventHandler(dispatcherSecond_Tick);
secondTimer.Interval = new TimeSpan(0, 0, 1);
secondTimer.Start();
}
private void dispatcherSecond_Tick(object sender, EventArgs e) // one second timebase event handler
{
systemDateTime = DateTime.Now;
UpdateTime();
}
}
它说我可能有无限循环或无限递归。我在这里缺少什么?
谢谢! :)
编辑:我添加了'公共类ConfigClass:MainWindow',它是错误的来源。答案 0 :(得分:2)
你的无限循环是因为:
ConfigClass Core = new ConfigClass();
在MainWindow
课程中。
每次创建ConfigClass
时,MainWindow
构造函数(和字段初始化)也会运行。但是,MainWindow
字段初始化包括创建另一个ConfigClass
。所以它的构造函数和超类构造函数将会运行。
有点难以理解你正在尝试做什么(它有点怀疑你的MainWindow
中有一个子类的引用 - 但上面是你问题的原因。
来自你的评论:
我在ConfigClass上继承MainWindow的目的是因为我想使用Reference.To类在数组中查找。
您不需要继承MainWindow
来做到这一点。 您的代码的任何部分都可以编写MainWindow.ReferenceTo
而不会出现问题