读书人

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

发布时间: 2013-03-19 17:22:05 作者: rapoo

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

读书人网 >C#

热点推荐