对于每个循环立即退出

时间:2012-03-06 22:36:25

标签: vb6

我正在将VB6项目转换为C#。我遇到过一些我并不完全理解的VB6(我根本没有能力进行调试)。这是一个循环,在做任何事之前立即退出:

For Each objSubFolder In objFolder.SubFolders
  Exit For
Next

任何人都可以解释一下吗?我确信它有所帮助。我猜它是在分配一个变量,或者其他东西。如果是这样,它只做一次吗?

3 个答案:

答案 0 :(得分:6)

如果objSubFolder存在于For Each范围之外(根据你的评论),代码大致相当于这个c#

var folders = Directory.GetDirectories(@"c:\someFolder");
var firstFolder=folders.FirstOrDefault();

即。找到给定文件夹的第一个子文件夹(如果存在)。

答案 1 :(得分:4)

此代码主要是完整的无操作。这个代码的唯一潜在重要影响是它将执行objFolder.SubFolders属性或方法。如果这个成员有一个值得注意的副作用,那么这个代码可能很重要。

它大致等同于以下C#代码

object objSubFolder = null;
using (var e = objFolder.SubFolders.GetEnumerator()) {
  if (e.MoveNext()) {
    objSubFolder = e.Current();
  }
}

请注意,这仍然不一定是1-1翻译。

  • 如果先前在方法中定义objSubFolder,则会错误地覆盖空文件夹集合上的值
  • 如果VB代码有Option Explicit Off,那么您可能需要将objFolder.SubFolders转换为dynamic以接近相同的行为。

答案 2 :(得分:3)

Exit For突破循环 - 基本上是C#的break关键字。看起来这个循环没有做任何实际的事情。