1
我正在将旧的Borland C++应用程序转换为C#.NET。如何在C++布尔表达式中评估指针?
这个类看起来像是基本上只是一个双链表。
其中一个方法是这样的:
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();
}
'typedef的CheckMessage * MessagePtr;'是'CheckMessage'和'CheckMessageList'类,我的工作之间的定义。那么对于C#,它基本上和'while(message!= null)'一样? – sab669
是的,没错。 – CoryKramer
值得一提的是:几乎所有的内置类型都有一个隐式转换为'bool'的比较为零。对于指针类型和指向成员类型的指针,零计算结果为nullptr(C#'null')。对于整数类型,浮点类型,枚举类型,与零比较仍然可以隐式使用。对于所有内置类型,'a && b'的含义与'a!= 0 && b!= 0'相同。 – hvd