我有以下代码我试图“修复”
foreach (System.IO.DirectoryInfo dir in source.GetDirectories())
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name),safeFileNames);
foreach (System.IO.FileInfo file in source.GetFiles())
if (safeFileNames)
{
}
代码继续做更多,但我注意到foreach循环不包含任何{}括号......
以下哪项将解决此问题:
foreach (System.IO.DirectoryInfo dir in source.GetDirectories())
{
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name),safeFileNames);
}
foreach (System.IO.FileInfo file in source.GetFiles())
{
if (safeFileNames)
{
}
}
或..........
foreach (System.IO.DirectoryInfo dir in source.GetDirectories())
{
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name),safeFileNames);
foreach (System.IO.FileInfo file in source.GetFiles())
if (safeFileNames)
{
}
}
一旦我修好了外环,我就可以看看清理内环了。
另一方面,没有比看到代码逻辑不包含控件边界的显式标记更令我讨厌的了。您可以在网络上的JS代码示例中看到很多这样的内容。
感谢。
答案 0 :(得分:7)
第一个选项是正确的:
foreach (System.IO.DirectoryInfo dir in source.GetDirectories())
{
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name),safeFileNames);
}
foreach (System.IO.FileInfo file in source.GetFiles())
{
if (safeFileNames)
{
}
}
如果您的阻止声明不包含任何{}
,则只会包含下一行。
答案 1 :(得分:2)
第二项是完全错误的,因为它会改变你的代码的含义。第一项是可行的,但由于语言不需要大括号而且你对它们的缺席感到困扰,你可能想要这样:
foreach (System.IO.DirectoryInfo dir in source.GetDirectories())
{
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name),safeFileNames );
}
foreach (System.IO.FileInfo file in source.GetFiles())
{
if (safeFileNames)
{
}
}
修改强>
既然你改变了问题,那肯定是第一个选择。