"for(bool flag = true; flag; flag = false){...}" - 这是正常的吗?

sel*_*dog 4 c# for-loop

我从未见过以for这种方式初始化的循环,也不明白为什么会以这种方式编写?

我正在研究连接到.NET中的IMAP服务器,并开始查看名为ImapX的库中的代码.我for在一个方法中找到了循环,该方法将数据写入a NetworkStream然后似乎在funky for循环中读取响应.我不想逐字复制和粘贴别人的代码,但这里是要点:

public bool SendData(string data)
{
  try
  {
    this.imapStreamWriter.Write(data);

    for (bool flag = true; flag; flag = false)
    {
      var s = this.imapStreamReader.ReadLine();
    }
  }
  catch (Exception)
  {
    return false;
  }

  return true;
}
Run Code Online (Sandbox Code Playgroud)

同样,这不是确切的代码,但它是一般的想法.这就是所有方法所做的,它不使用服务器响应,只是true在没有抛出异常的情况下返回.我只是不明白for循环是如何或为什么这样使用的; 任何人都可以解释初始化这个优惠的优势,如果有的话?

Jon*_*eet 5

这是一次执行循环的可怕方式.如果你将flaginitalizer 更改为并非总是如此true,那么它可能会稍微有点意义,但不是很多.我之前完全没有建议过这个代码:

Animal animal = ...;
for (Dog dog = animal as Dog; dog != null; dog = null)
{
    // Use dog...
}
Run Code Online (Sandbox Code Playgroud)

...作为一种使用as操作员而不"污染"外部范围的方法.但这是语言愚蠢,而不是我真正使用过的东西.