下面是我用来计算文件夹中文件的代码片段(只是文件,而不是其他文件夹)。如果此文件夹中有多个文件,我需要抛出异常。
private bool CheckCondition2(String FolderName)
{
bool ConditionPassed = false;
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(FolderName);
int count = dir.GetFiles().Length;
ConditionPassed = (count > 1);
return ConditionPassed;
}
然后我将其称为主题:
if (!CheckCondition2(SourceFolder))
{
CanCopy = false;
throw new Exception("More than one mark-off file.");
}
目前,当我测试它时,它告诉我目录中有多个文件,尽管只有一个文件。我在代码中做错了什么?
答案 0 :(得分:4)
在您的方法中,如果有多个文件,则返回true
。
然后,在if语句中,检查false
。你好像把它们混合了一点。
调试代码并在更改时遵循该值以查看是否存在任何逻辑错误始终是个好主意。当然,更自动,更可靠的方法是编写单元测试。
您可以将方法中的条件切换为
ConditionPassed = (count <= 1);
这样,这意味着当您处于'正确'状态时,该方法将返回true
。您可以改为将if语句更改为
if (CheckCondition2(SourceFolder))
要么适合你。在后一个示例中,我还建议将方法的名称更改为HasMoreThanOneFile
之类的内容,以使其非常明显地发挥作用。
答案 1 :(得分:0)
试试这个:
ConditionPassed = (count <= 1); //check should pass if there is at most one file
答案 2 :(得分:0)
改变条件
ConditionPassed = (count <= 1);
或if语句
if (CheckCondition2(SourceFolder)))
我认为您的成功案例是源文件夹中最多1个文件
答案 3 :(得分:0)
为什么不试试......而不是使用bool。
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(FolderName);
int count = dir.GetFiles().Length;
if (count > 1)
{
throw new Exception("More than one mark-off file.");
}
else
{
// Something else
}
它有点整洁的代码(抱歉强迫症正在开始!)
答案 4 :(得分:0)
我认为你的逻辑存在缺陷。 ConditionPassed =(count&gt; 1)应该是ConditionPassed =(count&lt; = 1)。希望这有帮助!
答案 5 :(得分:0)
请尝试调试您的代码。
它在if语句中进行了一些小改动后才起作用,应该是if (CheckCondition2(SourceFolder))
尝试更新函数名称以避免混淆。