我有两个类,我需要它们彼此构成实例。 为了防止堆栈溢出异常发生,我将构造函数与参数一起使用。但是我怎么称呼他们呢?我只能调用基本构造函数。
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;
}
答案 0 :(得分:2)
我不明白为什么要在构造函数之外初始化实例。这应该可以正常工作:
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);
}
}