【问题标题】:Error: An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll错误:mscorlib.dll 中出现“System.StackOverflowException”类型的未处理异常
【发布时间】:2014-01-27 19:35:49
【问题描述】:

今天我开始上课了。我创建了一些类来让我的MainWindow.xmal.cs 更小一些。创建第一个类并调试后,我收到以下错误消息:

在 mscorlib.dll aufgetreten 中存在类型“System.StackOverflowException”。

在 APPLICATION.exe aufgetreten 中存在类型“System.StackOverflowException”。

class Sprachpaket_ENG_Template01
{
    MainWindow MW = new MainWindow();

    public void Template01()
    {
        MW.checkBox_1_Bcc.Content = "Bcc:";
        MW.checkBox_1_Cc.Content = "Cc:";
    }

--> 这会导致错误:MainWindow MW = new MainWindow();

【问题讨论】:

  • 错误在 //... 代码中
  • 造成这种情况的最佳方法是public int Foo { get { return Foo; } },所以也许可以寻找类似的东西。
  • 具体在哪里?这只是一些更多的任务,比如...... MI_04.Header = CHN_MT.MenuitemTitel_04; ...等等。
  • @Exception 您现在希望有人真正猜测错误所在行的样子吗? :|显示相关代码和堆栈跟踪。顺便说一句。 - 尝试自己阅读,错误应该很明显。
  • 您发布的代码不会导致异常。您的应用程序中可能存在无限递归的代码。

标签: c# stack-overflow


【解决方案1】:

根据您的编辑和 cmets,您有:

class Sprachpaket_ENG_Template01
{
    // Create a new MainWindow whenever Sprachpaket_ENG_Template01 is created
    MainWindow MW = new MainWindow();
}

class MainWindow()
{
    public MainWindow()
    {
        // Create a new Sprachpaket_ENG_Template01 whenever MainWindow is created
        Sprachpaket_ENG_Template01 ENG_01 = new Sprachpaket_ENG_Template01();
    }
}

这里有一个无限循环,这就是堆栈溢出的原因。

您可能希望将 MainWindow 作为参数传递给 Sprachpaket_ENG_Template01 构造函数:

class Sprachpaket_ENG_Template01
{
    MainWindow MW;

    public Sprachpaket_ENG_Template01(MainWindow mw)
    {
        MW = mw;
    }
}

class MainWindow()
{
    public MainWindow()
    {
        Sprachpaket_ENG_Template01 ENG_01 = new Sprachpaket_ENG_Template01(this);
    }
}

【讨论】:

  • 好的,非常感谢,我想我明白了!我正在尝试这样做 --> 几分钟后回复。 ;)
  • 好像有效,非常感谢! ;) 但是如何在 MainWindow 中“运行”类的内容?
  • @Exception 我不明白你的问题。你想跑什么?您可能想发布一个单独的问题...
  • 好的,我会这样做。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
相关资源
最近更新 更多