我正在将VB6项目转换为C#。我遇到过一些我并不完全理解的VB6(我根本没有能力进行调试)。这是一个循环,在做任何事之前立即退出:
For Each objSubFolder In objFolder.SubFolders
Exit For
Next
任何人都可以解释一下吗?我确信它有所帮助。我猜它是在分配一个变量,或者其他东西。如果是这样,它只做一次吗?
答案 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
,则会错误地覆盖空文件夹集合上的值Option Explicit Off
,那么您可能需要将objFolder.SubFolders
转换为dynamic
以接近相同的行为。 答案 2 :(得分:3)
Exit For
突破循环 - 基本上是C#的break
关键字。看起来这个循环没有做任何实际的事情。