当前位置: 首页 > 编程语言 > C#

为什么这个函数没有返回任何东西,尽管有一个匹配项?分享

时间:2023-04-10 16:21:29 C#

为什么这个函数没有返回任何东西,尽管有一个匹配项?我将此(紧凑型框架-此代码在WindowsCE手持设备上运行)称为方法:stringdirName=startingDir;变种文件名=新列表();try{foreach(stringfinDirectory.GetFiles(dirName)){stringext=Path.GetExtension(f).ToUpper();字符串fileNameOnly=Path.GetFileNameWithoutExtension(f);如果((ext.Equals(EXTENSION,StringComparison.OrdinalIgnoreCase))&&(fileNameOnly.Contains(fileType))){fileNames.Add(f);}}foreach(stringdinDirectory.GetDirectories(dirName)){GetXMLFiles(fileType,d);}}catch(Exceptionex){MessageBox.Show(ex.Message);}返回文件名;}...像这样:ListXMLFiles=CCRUtils.GetXMLFiles(fileType,"\");MessageBox.Show(XMLFiles.Count.ToString());...但它不返回任何内容(MessageBox显示“0”),即使该文件与文件类型匹配并且具有扩展名.xml。是因为我的GetXMLFiles()方法有问题吗?根据这里的一只猫的说法,我的方法搞砸了,我应该更频繁地添加到通用字符串列表(文件名)中。如果他是对的,我就不会那样做,因为在我看来,方法应该是这样工作的:(a)第一个foreach循环查看根目录下的文件;如果找到匹配项,则将其添加到字符串的通用列表中(b)第二个foreach循环对其方法进行递归调用,对设备上的每个子目录调用一次;该目录再次出现步骤“a”,将任何匹配项添加到字符串的通用列表中。这样,搜索所有目录并将找到的任何匹配项添加到通用字符串列表(文件名)中。在第二个foreach循环运行它的路由/处理所有目录后,控制权下降到代码的最后一行,它将文件名返回给调用者。所以,据我了解,我应该归还比赛,但我什么也没得到。如果我错了而艾伦是对的,我应该在哪里添加额外的添加调用/我应该如何重新设计这个方法?更新这样调用它:ListXMLFiles=CCRUtils.GetXMLFiles(fileType,"\");...不工作,但做:ListXMLFiles=CCRUtils.GetXMLFiles(fileType,@"");在子目录中找到的文件。以这种方式捕获返回文件名:foreach(stringdinDirectory.GetDirectories(dirName)){fileNames.AddRange(GetXMLFiles(fileType,d));发生了什么是这一行varfileNames=newList();创建一个名为fileNames的局部变量。你可能认为因为你的方法是静态的,所以方法内部的变量也是静态的。不是这种情况。因此,每次调用GetXMLFiles时,都会为每次调用创建此变量的副本。由于fileNames对于每次调用GetXMLFiles都是本地的,因此您需要将它找到的所有fileNames返回给调用者,并且调用者需要将这些添加到本地的集合中。以上是C#学习教程:为什么这个函数没有返回,虽然有匹配?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: