Как вернуть переменную в пустоту - PullRequest
0 голосов
/ 11 октября 2018

У меня есть следующий код:

static void Scan(string path)
    {
        try{
               foreach (var file in Directory.EnumerateFiles(path, "zfsdfsdfsb.txt")){
                  Console.WriteLine("FILE: " + file);   
               }

              foreach (var dir in Directory.EnumerateDirectories(path)){
                  Console.WriteLine("DIRECTORY: " + dir);
                  Scan(dir);
               }
           }
    }

И я хочу остановить функцию и получить доступ к переменной, как только будет запущен

Console.WriteLine("FILE: " + file);

.

Я пытался вернуть его, но ничего не сделал, как я могу установить переменную и остановить функцию, как только файл будет найден?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

, если вы рекурсивно ищите файл, соответствующий заданному шаблону

static string Scan(string path)
    {
        try{
               foreach (var file in Directory.EnumerateFiles(path, "zfsdfsdfsb.txt")){
                  Console.WriteLine("FILE: " + file);   
                  return file;
               }

              foreach (var dir in Directory.EnumerateDirectories(path)){
                  Console.WriteLine("DIRECTORY: " + dir);
                  var ret = Scan(dir);
                  if(ret != null)
                      return ret;
               }
           }
         return null;
    }

, если вы ищете конкретный файл, замените первый цикл на

 var fpath = Path.Combine(path,"zfsdfsdfsb.txt");
   if (File.Exists(fpath))
         return fpath;
0 голосов
/ 11 октября 2018

Измените void на string static string Scan(string path).

Затем, внутри вашего цикла, верните строку, когда найдете:

foreach (var file in Directory.EnumerateFiles(path, "zfsdfsdfsb.txt")){
     Console.WriteLine("FILE: " + file);   
     return file;
}

Вам также нужно будет вернутьстрока в конце метода, если ничего не найдено.

...