如何调用带参数的构造函数?

迪玛科兹尔

我有两个类,我需要它们来创建彼此的实例。为了防止堆栈溢出异常,我使用带参数的构造函数。但是我怎么能打电话给他们呢?我只能调用基本的构造函数。

public class TimerData : INotifyPropertyChanged
{
    public TimerData()
    {
        //parameters = new Parameters();
    }

    public TimerData(Parameters pr = null)
    {
        parameters = pr ?? new Parameters(this);
    }

    // Here I create an instance of the TimerData class to call the constructor 
    // with parameters through it. It gives an error that the field initializer 
    // cannot access a non-static field
    TimerData timerData = new TimerData();
    private Parameters parameters = new Parameters(timerData);
}


public class Parameters : INotifyPropertyChanged
{
    public Parameters()
    {
        //timerData = new TimerData();
        //timerData.EventSecondsNotify += DecreaseFatigue;
        //timerData.EventSecondsNotify += DecreaseSatiety;
    }

    // How to call this constructor?
    public Parameters(TimerData td = null)
    {
        timerData = td ?? new TimerData(this);
        timerData.EventSecondsNotify += DecreaseFatigue;
        timerData.EventSecondsNotify += DecreaseSatiety;
    }

    private TimerData timerData;
}
苏哈布·容迪

我不明白为什么要在构造函数之外初始化实例。这应该可以正常工作:

public class TimerData
{
  private Parameters parameters;
  public TimerData(Parameters pr = null)
  {
    parameters = pr ?? new Parameters(this);
  }
}
public class Parameters
{
  private TimerData timerData;
  public Parameters(TimerData td = null)
  {
    timerData = td ?? new TimerData(this);
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章