指针如何在c++布尔表达式中求值

本文关键字:布尔表达式 c++ 指针 | 更新日期: 2023-09-27 18:03:42

我正在将一个旧的Borland c++应用程序转换为c# .NET

这个类看起来就像是一个双重链表

其中一个方法是这样的:

MessagePtr CheckMessageList::First(MessageSourceTable _source)
{
  MessagePtr
    message = First();
  bool
    done = false;
  while (message && !done)
  {
    done = (bool) (message->SourceTable() == _source);
    if (!done)
      message = Next();
  }
  return (message);
}

我不明白while (message)是如何评估的。

在c#中,我有这个:

public CheckMessage Fist(enums.MessageSourceTable table)
{
    CheckMessage message = First();
    bool done = false;
    while (message && !done)
    {
        done = message.SourceTable.Equals(table);
        if (!done)
            message = Next();
    }
    return message;
}

这是无效的,因为它不知道如何处理while语句

我几乎没有c++的经验。有人能给我指个方向吗?

编辑;这基本上是一样的吗?

public CheckMessage Fist(enums.NYMSMessageSourceTable table)
{
    foreach (CheckMessage cm in _list)
    {
        if (cm.SourceTable.Equals(table))
            return cm;
    }
    return Last();
}

指针如何在c++布尔表达式中求值

在c++中指针有到bool的隐式转换,如果指针等于nullptr则为" false ",否则为" true "。所以

while(message)

等价于

while(message != nullptr)