2015-02-25 3 views
2

Я конвертирую приложение vb6 в C#, и я сталкивался с чем-то, что я не совсем понимаю. Я никогда не видел структуру if if, где оцениваемое выражение буквально «истинно» или «ложно».Если заявление содержит только «True»

private bool InitializeForProgramming()  //OK 
    { 
     if (J1939.getReplyStatus() == modJ1939.dmOpFailed)    //or OpComplete (dmBusy auto cycles) 
     { 
     //check the Pointer value to see if engineRunning, or already in Mode 
     if (true)        //let it proceed    *** ?? 
     { 
      //nothing to do 
     } 
     else 
     { 
      lblCommun.Text = "ProgramMode Failed!"; 
      lblCommun.ForeColor = Color.Red; 

      //could report more detailed reasons! (engineRunning, etc.) 
      return true;    //FAILED! 
     } 

     } 

Что оценивается здесь с выражением if (true)? Если это правда?

Вот исходный код VB6:

Private Function InitializeForProgramming() As Boolean  'OK 
If getReplyStatus = dmOpFailed Then    'or OpComplete (dmBusy auto cycles) 
'check the Pointer value to see if engineRunning, or already in Mode 
If (True) Then        'let it proceed    *** ?? 
    'nothing to do 
Else 
    txtCommun.Text = "ProgramMode Failed!" 
    txtCommun.ForeColor = vbRed 

    'could report more detailed reasons! (engineRunning, etc.) 
    InitializeForProgramming = True    'FAILED! 
    Exit Function 
End If 
End If 

Пожалуйста, дайте мне знать, если вы нуждаетесь во мне, чтобы включить что-нибудь еще, чтобы помочь мне получить ответ.

+2

Я люблю эту строку 'InitializeForProgramming = True«FAILED ' –

ответ

7

Скорее всего, это результат состояния, которое было удалено в прошлом. То есть Раньше существовало условие в if, но не более. Вы должны проверить историю управления версиями для изменений в этой строке.

Вы можете просто удалить всю инструкцию if в этом случае для вашей перезаписи. Также C#, вероятно, жалуется, что не все пути кода возвращают значение из метода.

+0

Плюс один!. Похоже, что давно кто-то быстро взломал. Я замечаю звезды и вопросительные знаки в исходном комментарии. 'пусть это будет продолжаться *** ??' – MarkJ

1

Вы идете вправо, он ничего не делает по коду if (true) в vb6. Продолжайте свой код

1

Это не может быть так, я думаю, что оператор еще должен находиться вне соответствия его родительскому. В противном случае , если (true) было чем-то еще до этого и для причин отладки остался там как истинный

1

if (true) ничего не значит в этом случае, но похоже, что else - это catch или Exception OnError.

В C# вы должны просто использовать try/catch здесь.

1

Кто-то, прежде чем думать о том, что проверка должно быть сделано:

//check the Pointer value to see if engineRunning, or already in Mode 

Возможно это требование, которое не было разработано еще.

if (true) 

означает всегда, подобно:

if (1 == 1) 
Смежные вопросы