【问题标题】:StackOverflowException on a huge class一个巨大的类上的 StackOverflowException
【发布时间】:2011-07-12 21:34:24
【问题描述】:

所以,我开始着手这个庞大的项目。这是一个拥有数百个变量和方法以及许多部分类的巨大类。

interface IBusinessReturn
{

    string variableOne { get; set; }
    string variableTwo { get; set; }

    string variableHundred { get; set; }
    //a lot more...
 }

 public partial class BusinessTransaction : IBusinessReturn
{

    private string _variableOne;
    public string variableOne
    {
        get { return variableOne; }
        set { _variableOne= value; }
    }

    private string _variableTwo;
    public string variableTwo
    {
        get { return variableTwo; }
        set { _variableTwo = value; }
    }

    private string _variableHundred;
    public string variableHundred
    {
        get { return variableHundred; }
        set { _variableHundred = value; }
    }

    // And so it goes on till hundreds...
}

还有很多这样的部分:

public partial class BusinessTransaction: IBusinessTransaction238
{
   //Lots of methods
}

问题是:除了我声明的一些新变量外,它都可以正常工作。 (varOne 和 Two,在上面的示例中)。当我尝试为这些 var 设置任何值时,我得到了 StackOverflowException。我 100% 确定它们的声明方式和其他的一样。

我是这样称呼的:

 BusinessTransaction v763 = new BusinessTransaction();

 v763.variableHundred = "Hi"; //working
 v763.variableOne = "Hello"; //StackOverflow HERE.

我只是看不出发生这种情况的任何原因,我只希望您能告诉我这是否与此类中的大量方法和变量有关..

【问题讨论】:

  • 这是在某种循环中吗?
  • 您是否有理由不使用自动实现 getter 和 setter 的 { get; set; } 语法?
  • 在 C# 中,建议公共成员使用 PascalCased 而不是 camelCased。

标签: c# asp.net oop stack-overflow


【解决方案1】:

查看您的吸气剂 - 任何一个都没有下划线。您正在导致无限循环。

public string variableOne
{
    get { return variableOne; }
    set { _variableOne= value; }
}

【讨论】:

  • 是的,就是这样。几个小时在某些东西上,你就是看不到那种东西。谢谢
【解决方案2】:

它应该返回私有成员,而不是它自己。

应该是

public string variableOne
{
    get { return _variableOne; // error was here
    }
    set { _variableOne= value; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2011-09-20
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多