即使有很多答案,这也是我的看法。一切都归结为优化。我将展示两个示例,其中一个比另一个要快。
情况1: while
string fileName = string.Empty, fullPath = string.Empty;
while (string.IsNullOrEmpty(fileName) || File.Exists(fullPath))
{
fileName = Guid.NewGuid().ToString() + fileExtension;
fullPath = Path.Combine(uploadDirectory, fileName);
}
情况2: do while
string fileName = string.Empty, fullPath = string.Empty;
do
{
fileName = Guid.NewGuid().ToString() + fileExtension;
fullPath = Path.Combine(uploadDirectory, fileName);
}
while (File.Exists(fullPath));
因此,有两个将做完全相同的事情。但是有一个根本的区别,那就是while需要输入额外的语句才能输入while。这很丑,因为我们可以说Guid
该类的每种可能情况都已经采用,除了一个变体。这意味着我将不得不循环5,316,911,983,139,663,491,615,228,241,121,400,000
多次。每次我到达while语句的结尾时,都需要进行string.IsNullOrEmpty(fileName)
检查。因此,这将占用一点点CPU工作量。但是,将这个非常小的任务乘以可能的组合Guid
班级而我们谈论的是小时,天,月或额外时间?
当然,这是一个极端的示例,因为您可能不会在生产中看到此情况。但是,如果我们考虑使用YouTube算法,很可能他们会在已经获取某些ID的情况下遇到ID的生成。因此,可以归结为大型项目和优化。