C# 使用对象指定索引值时出错

C# 使用对象指定索引值时出错,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

这是我的移动平均线课程。我在这行代码中得到一个运行时错误:\ ma[\ u period-1]。ClosingPrice=sum/\ u period

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;