指针如何在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++中指针有到bool
的隐式转换,如果指针等于nullptr
则为" false ",否则为" true "。所以
while(message)
等价于
while(message != nullptr)