2014-02-19 2 views
-3

Я начинающий программист, так что простите меня, если это что-то очевидное. Я проверил все фигурные скобки и нашел соответствующие пары во всех случаях здесь. Код компилируется без этого фрагмента. Есть идеи?Получение CS1513} Ожидается, но все фигурные скобки есть

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; 
    } 

Вот полный код: http://pastebin.com/aHbzqKbw

+1

@MitchWheat, я подозреваю, что метод возвращает массив/словарь или что-то в этом роде. –

+0

.. @ aleksey.berezan: Слишком рано утром! :) –

+0

Как @Jay сказал - ошибка где-то еще. Но даже с этим кодом он может быть оптимизирован для 'return Close [0]> KeltnerChannel (Offset, Period) [0]' – JleruOHeP

ответ

3

Это не имеет никакого смысла отмечать локальные переменные метода, как private. Вот что вызывает ваши ошибки.

Почему компилятор дает вам ожидаемую ошибку }, я не уверен. Я предполагаю, что компилятор предполагает, что private int howmanybars интерпретируется как определение поля частного экземпляра, которое не может быть объявлено внутри метода. Поэтому он сообщает вам, что он ожидает завершения метода Bullish до объявления.

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; 
} 
+0

Спасибо! Это имеет смысл, конечно. Я удалил декларации 'private', а затем добавил аргументы в том, где были вызваны методы' Бычий() 'и' Медвежий() ', и он скомпилирован просто отлично! Все еще не уверен, почему он дал мне ожидаемую ошибку, но теперь все хорошо. – hutch34

+0

На самом деле, перечитав свой комментарий, я думаю, что вы совершенно правы: компилятор ожидал, что 'Бычий()' закончится перед декларацией 'private'. Вот где компилятор сказал мне, что ошибка была. – hutch34

Смежные вопросы