如何在C ++布尔表达式中计算指针?

时间:2015-07-20 17:59:41

标签: c# c++ object boolean

我将旧的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;
}

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

我几乎没有使用C ++的经验。有人能指出我正确的方向吗?

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

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

    return Last();
}

1 个答案:

答案 0 :(得分:4)

在C ++中,指针具有到bool的隐式转换,其中指针是" falsy"如果它等于nullptr和" truthy"除此以外。所以

while(message)

相当于

while(message != nullptr)