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