直到循环赢了退出

时间:2015-02-20 23:59:29

标签: c#

这一定是一个愚蠢的问题,但凭借我的逻辑,我无法理解为什么它不会退出。 这是我的循环:

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之后存在循环,然后循环应该退出,因为文件不存在。 那我哪里错了?

3 个答案:

答案 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;
}