0

我正在研究 MACD。MACD 函数太长,我正在重复代码。我想创建一个函数 SMA 并将其调用到 MACD 函数。我创建了这个类,但出现错误:

namespace myBackEnd
{
   public class SMA
{
    public decimal SMA (Queue<Models.DateClose> queue, int period) <--- error here
    {
        decimal average, sum=0;
        for (int i = 0; i < period; i++)
        {
            Models.DateClose dateClose;
            dateClose = queue.Dequeue();
            sum += dateClose.Close;
        }
        return average = sum/period;
    }
}

我收到错误“成员名称不能与封闭名称相同”。我该如何解决这个问题?

4

2 回答 2

1

那是因为您不能定义与类名相同的方法名(异常:)Constructor。编译器可能认为它是一个构造函数,但它不可能是因为成员函数具有返回类型而构造函数不能。所以本质上提供一个单独的有意义的名字,比如

public decimal SMAMethod (Queue<Models.DateClose> queue, int period)
于 2018-11-12T21:09:43.937 回答
-1

在 C# 中,不允许将方法命名为与放入它们的类型相同的名称。因此,由于您的类名为 SMA,因此您不能在 SMA 中命名任何方法。换个名字试试

public decimal DoStuff (Queue<Models.DateClose> queue, int period)

(显然不是 DoStuff,因为这并不是真正的自我记录,而是与您的用例相关的东西)

于 2018-11-12T21:34:43.347 回答