C# 需要获取CS1513},但所有大括号都在那里

C# 需要获取CS1513},但所有大括号都在那里,c#,C#,我是一个新手程序员,所以请原谅我,如果这是显而易见的。我已经检查了所有的大括号,在所有情况下都找到了匹配的大括号。没有这个代码段,代码可以很好地编译。有什么想法吗 protected bool Bullish(int ConsecutiveBullishBars) { private int howmanybars = ConsecutiveBullishBars - 1; private bool IsMarketBullish = false;

我是一个新手程序员,所以请原谅我,如果这是显而易见的。我已经检查了所有的大括号,在所有情况下都找到了匹配的大括号。没有这个代码段,代码可以很好地编译。有什么想法吗

protected bool Bullish(int ConsecutiveBullishBars)
    { 
       private int howmanybars = ConsecutiveBullishBars - 1;
       private bool IsMarketBullish = false;

        while (howmanybars >= 0) 
        {
            if (Close[howmanybars] > KeltnerChannel(Offset, Period)[howmanybars])
            {
                IsMarketBullish = true;
            }

            else
            {
                IsMarketBullish = false;
            }
            howmanybars--;
        }

        return IsMarketBullish;
    }

下面是完整的代码:

将局部方法变量标记为
私有
没有任何意义。这就是造成你的错误的原因

为什么编译器会给你一个
}
预期错误,我不确定。我猜想编译器假设
private int howmanybar
被解释为私有实例字段定义,而不能在方法中声明。因此,它告诉您,它期望
看涨
方法在声明之前结束

protected bool Bullish(int ConsecutiveBullishBars)
{ 
   int howmanybars = ConsecutiveBullishBars - 1;
   bool IsMarketBullish = false;

    while (howmanybars >= 0) 
    {
        if (Close[howmanybars] > KeltnerChannel(Offset, Period)[howmanybars])
        {
            IsMarketBullish = true;
        }
        else
        {
            IsMarketBullish = false;
        }
        howmanybars--;
    }

    return IsMarketBullish;
}

@MitchWheat,我怀疑该方法返回数组/字典或类似的东西。…。@aleksey.berezan:早上太早了!:)正如@Jay所说的,错误在其他地方。但即使使用此代码,也可以将其优化为
返回关闭[0]>KeltnerChannel(偏移量,周期)[0]
@JleruOHeP:我认为这不是完全相同的行为。如果Close的长度为零,则您的解决方案将抛出。@删除此方法后,jay代码可以编译得很好……没有关于缺少括号的错误,因此我认为情况并非如此。。。但我也很乐意发布其余的代码。谢谢你看:谢谢!这当然有道理。我删除了
private
声明,然后在调用
Bullish()
Bearish()
方法的地方添加了参数,并且编译得很好!仍然不确定为什么它给了我
}
预期的错误,但现在一切都好了。事实上,重新阅读您的评论,我认为您完全正确:编译器预期
看涨()
private
声明之前结束。这就是编译器告诉我错误所在的地方。