C# 如何在C++;布尔表达式? 我将一个旧的Borland C++应用程序转换成C .net .net/p>
这个类看起来基本上只是一个双链表 其中一种方法如下所示:C# 如何在C++;布尔表达式? 我将一个旧的Borland C++应用程序转换成C .net .net/p>,c#,c++,object,boolean,C#,C++,Object,Boolean,这个类看起来基本上只是一个双链表 其中一种方法如下所示: MessagePtr CheckMessageList::First(MessageSourceTable _source) { MessagePtr message = First(); bool done = false; while (message && !done) { done = (bool) (message->SourceTable() == _source
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++指针中有隐式转换为
while(message)
相当于
while(message != nullptr)
typedef CheckMessage*MessagePtr代码>是在我正在处理的CheckMessage
和CheckMessageList
类之间定义的。因此,对于C来说,这基本上与while(message!=null)
相同,同样值得一提的是:几乎所有内置类型都有一个到bool
的隐式转换,与零相比。对于指针类型和指向成员类型的指针,零的计算结果为nullptr
(C#null
)。对于整数类型、浮点类型、枚举类型,与零的比较仍然隐式可用<代码>a和b的意思与a!=0&&b!=0
适用于所有内置类型。