作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 Visual Studio 2013 Express,我是 Visual C# 的新手。我确信有更好的方法来做我正在尝试的事情,我将不胜感激任何建议。
我正在尝试编写的代码会评估一系列测试,并仅在所有测试 = TRUE 时设置一个标志。我目前正在使用六个嵌套的 if 结构来完成这项工作,虽然它有效,但我正在寻找更清洁、更专业的解决方案。这是示例(在这篇文章中缩短为三个级别):
private const string sDrive = "D:\\";
private const string sFolder = "FTP\\";
private const string sDivFolder = "ABC";
private static bool bSanity = false;
private static void SanityCheck()
{
if (Directory.Exists(sDrive))
{
if (Directory.Exists(sDrive + sFolder))
{
if (Directory.Exists(sDrive + sFolder + sDivFolder))
{
bSanity = true;
}
else
{
Console.WriteLine("FATAL: Div folder doesn't exist.");
}
}
else
{
Console.WriteLine("FATAL: Root folder doesn't exist.");
}
}
else
{
Console.WriteLine("FATAL: Disk drive doesn't exist.");
}
}
最佳答案
主要问题是您是否需要保留与现在相同的错误报告。一般来说,如果需要的话,我认为通过反转案例来处理更简单。这将允许您使用 if
/else if
移除嵌套:
private static void SanityCheck()
{
if (!Directory.Exists(sDrive))
{
Console.WriteLine("FATAL: Disk drive doesn't exist.");
}
else if (!Directory.Exists(Path.Combine(sDrive, sFolder))
{
Console.WriteLine("FATAL: Root folder doesn't exist.");
}
else if (!Directory.Exists(Path.Combine(sDrive, sFolder, sDivFolder))
{
Console.WriteLine("FATAL: Div folder doesn't exist.");
}
else
{
bSanity = true;
}
}
如果不需要详细报错,直接查看最底层文件夹即可:
private static void SanityCheck()
{
if (Directory.Exists(Path.Combine(sDrive, sFolder, sDivFolder))
bSanity = true;
else
Console.WriteLine("FATAL: Drive or folder doesn't exist.");
}
关于If..And If...And If 的 C# 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572581/
我是一名优秀的程序员,十分优秀!