2012-10-24 268 views
1

我有這樣的功能:我怎樣才能得到一個字符串,並返回每次從數組中的字符串?

private string offline(string targetDirectory) 
     { 
      string directory = ""; 
      try 
      { 
       string[] dirs = Directory.GetDirectories(targetDirectory,"*.*",SearchOption.TopDirectoryOnly); 
       for (int i = 0; i < dirs.Length; i++) 
       { 
        directory = dirs[i]; 
       } 
      } 
      catch 
      { 

      } 
      return directory; 

     } 

例如,如果targetdirectory中爲c:\然後我得到的陣列14名的目錄英寸 現在我希望每次我離線調用函數時,都會返回一次第一個字符串c:\ $ Recycle.Bin 然後它將返回c:\ test 並且每次我調用函數時它都會返回下一個字符串來自陣列。 由於即時通訊使用recrusive函數,並從recrusive調用這個離線函數我希望它每次都返回數組中的下一個字符串。

現在,它現在將返回數組中的最後一個目錄,只是它。

我該怎麼辦?

+2

我不知道我跟隨,但它聽起來像是你想實現一個迭代器,即返回IEnumerable的''的方法。請查看http://msdn.microsoft.com/en-us/library/dd383573.aspx,以獲取與您所談論內容接近的示例。 –

回答

4

最簡單的方法 - 使用yield

IEnumerable<string> offline(string dir) 
{ 
    ... 
    ... instead of directory = dirs[i] do 
    yield return dirs[i]; 
} 
+1

我同意這是如何做到這一點,雖然有些事情要說他只是返回'Directory.GetDirectories'的原始輸出並使用它。 –

相關問題