Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C++;布尔表达式? 我将一个旧的Borland C++应用程序转换成C .net .net/p>_C#_C++_Object_Boolean - Fatal编程技术网

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++指针中有隐式转换为 BOOL,其中指针为“假”,如果它等于“代码> NulLPTR < /代码>和“truthy”,则为“否则”。所以

while(message)
相当于

while(message != nullptr)

typedef CheckMessage*MessagePtr是在我正在处理的
CheckMessage
CheckMessageList
类之间定义的。因此,对于C来说,这基本上与
while(message!=null)
相同,同样值得一提的是:几乎所有内置类型都有一个到
bool
的隐式转换,与零相比。对于指针类型和指向成员类型的指针,零的计算结果为
nullptr
(C#
null
)。对于整数类型、浮点类型、枚举类型,与零的比较仍然隐式可用<代码>a和b的意思与
a!=0&&b!=0
适用于所有内置类型。