我在下面的代码中遇到了奇怪的问题,当我从 while 循环中排除断点时,结果会有所不同。
foreach 循环遍历列表中的 20 个项目并将每个项目添加到字典中。
当我在循环中添加断点并跳过 20 次时,添加了 20 个项目。
如果我删除所有断点并运行程序,则仅添加 1 个项目。
public void AddLinks(Dictionary<Guid,string> RowKeyTitles)
{
var combinedUrlsList = new Dictionary<string, string>();
var urlTemplate = ConfigurationManager.AppSettings["playlisturl"];
var count = 0;
foreach (var row in RowKeyTitles)
{
var shortUrl = StringGenerator.GenerateShortLink(4);
var combinedUrl = urlTemplate.Replace("{name}", row.Value).Replace("{id}",row.Key.ToString());
while (!combinedUrlsList.ContainsKey(shortUrl))
{
Console.WriteLine("test");
shortUrl = StringGenerator.GenerateShortLink(4);
if (!combinedUrlsList.ContainsKey(shortUrl))
{
count++;
Console.WriteLine("Added{0}", count);
combinedUrlsList.Add(shortUrl, combinedUrl);
}
}
}
Console.WriteLine("Count{0}",combinedUrlsList.Count());
Console.ReadLine();
}
有谁知道可能导致这种行为的原因是什么?