这一定是一个愚蠢的问题,但凭借我的逻辑,我无法理解为什么它不会退出。 这是我的循环:
Random _random = new Random();
int num;
char let;
string TempName = "~";
string sTempPath;
do
{
while (TempName.Length < 12)
{
num = _random.Next(0, 26);
let = (char)('a' + num);
TempName = TempName + let;
}
sTempPath = sDirectory + @"\" + TempName + @"." + sExt;
//MessageBox.Show(sTempPath);
} while (!File.Exists(sTempPath));
因此,根据我的逻辑,当Do循环开始时,它会直接触发while循环。虽然在TempName.Length
大于12之后存在循环,然后循环应该退出,因为文件不存在。
那我哪里错了?
答案 0 :(得分:2)
目前,只要 File
不存在,您的循环就会运行。如果您想在文件不存在时停止,请通过删除否定运算符(!)将条件更改为File.Exists
。
答案 1 :(得分:0)
您的情况不正确。
while(File.Exists(sTempPath))
答案 2 :(得分:0)
Random _random = new Random();
int num;
char let;
string TempName = "~";
string sTempPath = string.Empty;
while (TempName.Length < 12 || File.Exists(sTempPath))
{
num = _random.Next(0, 26);
let = (char)('a' + num);
TempName = TempName + let;
sTempPath = sDirectory + @"\" + TempName + @"." + sExt;
}