如果语句仅包含 "True"

If Statement Contains Only "True"

我正在将一个 vb6 应用程序转换为 c#,但我遇到了一些我不太明白的事情。我从未见过 if 语句结构,其中被评估的表达式字面上是 "true" 或 "false".

    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

如果您需要我提供任何其他信息以帮助我获得答案,请告诉我。

这很可能是过去删除的条件的结果。 IE。 if 中曾经有一个条件,但现在没有了。您应该检查源代码管理历史以了解对该行的更改。

在这种情况下,您可以删除整个 if 语句以进行重写。此外,C# 可能会抱怨并非所有代码路径 return 来自方法的值。

你说得对,伙计,vb6 中的代码 if(true) 什么都不做。继续你的代码

这不对,我认为 else 语句应该在外部匹配其父项。否则 if (true) 之前是别的东西并且出于调试原因被留在那里为 true

if (true) 在那种情况下没有任何意义,但似乎 else 是异常捕获或 OnError。

在 C# 中,您应该只在此处使用 try/catch。

之前有人认为必须做验证:

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

可能是尚未开发的需求。

if (true) 

表示总是,类似于:

if (1 == 1)