以下のコードで奇妙な問題が発生しています。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();
}
この動作の原因を知っている人はいますか?