C# 使用对象指定索引值时出错
这是我的移动平均线课程。我在这行代码中得到一个运行时错误:\ ma[\ u period-1]。ClosingPrice=sum/\ u periodC# 使用对象指定索引值时出错,c#,C#,这是我的移动平均线课程。我在这行代码中得到一个运行时错误:\ ma[\ u period-1]。ClosingPrice=sum/\ u period public class MyMovingAverage { private static DateClose[] _ma; private static int _period; private static DateClose[] _source; private st
public class MyMovingAverage
{
private static DateClose[] _ma;
private static int _period;
private static DateClose[] _source;
private static DateClose _dateClose;
public static DateClose[] MovingAverage(int period, DateClose[] source)
{
_period = period;
_source = source;
_ma = new DateClose[_source.Length];
decimal sum = 0;
for (int bar = 0; bar < _period; bar++)
{
_dateClose = _source[bar];
sum += _dateClose.ClosingPrice;
}
_ma[_period - 1].ClosingPrice = sum / _period; //RUN TIME ERROR HERE
_ma[_period - 1].Time = _dateClose.Time;
for (int bar = _period; bar < _source.Length; bar++)
{
_dateClose = _source[bar];
_ma[bar].ClosingPrice = _ma[bar - 1].ClosingPrice + _dateClose.ClosingPrice / _period
- _source[bar - _period].ClosingPrice / _period;
}
return _ma;
}
}
上面代码(标记位置)中引发的异常是
System.NullReferenceException
在设置其属性之前,应首先为\u ma
数组中的项创建一个对象
在\u ma[\u period-1]之前。ClosingPrice=sum/\u period代码>您应该执行以下操作:
_ma[_period - 1] = new DateClose();
然后
_ma[_period - 1].ClosingPrice = sum / _period;
和其他代码…如果你能写下你会遇到什么样的错误,这会很有帮助。从代码中,我猜“\u period”是0,您会得到被零分割的异常,或者可能是IndexOutOfRange,因为“\u ma”的索引无效。@Jure这是抛出的错误异常:BuySell\u 20190423.dll中的“System.NullReferenceException”
_ma[_period - 1].ClosingPrice = sum / _period;