首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# 关于return在foreach中的用法解决方案

2013-03-19 
c# 关于return在foreach中的用法我想写一个有字符串为返回值的方法,但是在方法内有foreach,如果我用了retu

c# 关于return在foreach中的用法
我想写一个有字符串为返回值的方法,但是在方法内有foreach,如果我用了return的话,它就不往下执行了,怎么办啊?代码如下,求大神啊




public string GetFileType(string FileDirectory)
        {
            DirectoryInfo DI = new DirectoryInfo(FileDirectory);
            FileSystemInfo[] f = DI.GetFileSystemInfos();
            string Ex="";
            foreach (FileSystemInfo i in f)
            {
                if (i is DirectoryInfo)
                {
                    if ((i.Attributes & FileAttributes.Hidden) == 0)
                    {
                        Search(i.FullName);
                        return null;
                    }
 
                }
                else
                {
                    if (Ex != "")
                    {
                        Ex = i.Extension;
                        return Ex;
                    }
                    else
                    {
                        Ex = Ex + "," + i.Extension;
                        return Ex;
                    }
 
 
                }
            }
         return string.Empty;    


        } 


[解决办法]
public string GetFileType(string FileDirectory)
        {
            DirectoryInfo DI = new DirectoryInfo(FileDirectory);
            FileSystemInfo[] f = DI.GetFileSystemInfos();
            string Ex="";
            foreach (FileSystemInfo i in f)
            {
                if (i is DirectoryInfo)
                {
                    if ((i.Attributes & FileAttributes.Hidden) == 0)
                    {
                        Search(i.FullName);
                        return null;
                    }
  
                }
                else
                {
                    if (Ex != "")
                    {
                        Ex = i.Extension;
                      break;
                    }
                    else
                    {
                        Ex = Ex + "," + i.Extension;
                        break;
                    }
  
  
                }
            }
         return Ex;


        } 


[解决办法]
引用:
引用:引用:break;
应该是continue;继续下一个循环

我发现了我把递归写错了,Search(i.FullName);而是GetFileType(i.FullName);如果在foreach内没有return就会报错,不是每个路径都有返回值


public string GetFileType(string FileDirectory)
        {
            DirectoryInfo DI = new DirectoryInfo(FileDirectory);
            FileSystemInfo[] f = DI.GetFileSystemInfos();
            string Ex="";
            foreach (FileSystemInfo i in f)
            {
                if (i is DirectoryInfo)
                {
                    if ((i.Attributes & FileAttributes.Hidden) == 0)
                    {
                        string str=GetFileType(i.FullName);
                        if(str!=null && str.Length>0)
                           Ex=Ex + "," + str;
                        //return null;
                    }
 
                }
                else
                {
                    if (Ex == "")
                    {
                        Ex = i.Extension;
                        //return Ex;
                    }
                    else
                    {
                        Ex = Ex + "," + i.Extension;


                        //return Ex;
                    }
 
 
                }
            }
         return Ex;    
        } 
[解决办法]

引用:
引用:引用:引用:break;怎么break啊,我想让他继续执行啊,为什么要Break 啊,我发现我加了Return就不往下执行了
break是结束整个循环体,
continue是结束本次循环
哦,这个我知道了,我发现了我把递归写错了,Sea……


你在方法最后加了retrun 就应该没问题的,是不是你在if或者else里加过return

热点排行