我将旧的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();
}
答案 0 :(得分:4)
在C ++中,指针具有到bool
的隐式转换,其中指针是" falsy"如果它等于nullptr
和" truthy"除此以外。所以
while(message)
相当于
while(message != nullptr)