将对象添加到列表时,c#循环失败!

Non*_*biz 0 c# loops list object

嘿,我有一个循环,将收集的字符串和整数添加到对象中,然后将该对象添加到列表中.我需要它来检查是否已经有一个属性==的对象到我要分配的那个,然后根据属性,我要么改变其中一个属性,要么仍然添加一个新属性宾语.我稍后会对此进行排序.这就是我被困的地方.我已经标记了行(当前已注释掉),当激活时,会导致命令行冻结.奇怪的是我之前使用IDENTICAL代码没有任何问题.

正如你所看到的,我目前已经注释了一些其他代码,因为在我可以继续之前这个位需要工作,但我把它留下来让你更多地了解我在做什么.

解决了.我实际上不得不向上移动另外两个循环.谢谢!

        //IF THIS IS THE FIRST ONE, ADD IT!
        var refSize = Referrals.Count();
        if (refSize == 0)
        {
        var NewReferral = new Referral(referringURL.Trim(), referringWords.Trim(), 3);
        Referrals.Add(NewReferral);
        }
        else
        {
        for (int i=0;i<refSize;i++)
        {

            // RESET BOOLS
            URLPresent = false;
            KeywordPresent = false;

            // IF THE URL IS ALREADY PRESENT
            //if (Referrals[i].URL == referringURL)
            //{
                //URLPresent = true;

                // CHECK IF THE KEYWORD IS ALREADY PRESENT
                //for (int ii=0;ii<Referrals[i].Keywords.Count;ii++)
                //{
                //  if (Referrals[i].Keywords[ii] == referringWords)
                //  {

                        // ADD TO OCCURRENCES
                //      Referrals[i].Occurrences++;
                //      KeywordPresent = true;
                //  }
                //}

                // ADD KEYWORD TO LIST
                // ###
                // ###
            //}

            // IF THE KEYWORD ISN'T THERE && THE URL ISNT THERE, ADD A NEW REFERRAL OBJECT
            if (URLPresent == false && KeywordPresent == false)
            {
                var NewReferral = new Referral(referringURL.Trim(), referringWords.Trim(), 3);
                //Referrals.Add(NewReferral);  //HERE IS MY PROBLEM! UNCOMMENTING THIS LINE CAUSES A FAIL.

                //URLPresent = true;
                //KeywordPresent = true;
            }

            // IF THE URL IS THERE, BUT THE KEYWORD ISNT, ADD AN ELEMENT TO THE REFERRAL.KEYWORDS LIST
            //else if (URLPresent == true && KeywordPresent == false)
            //{
                //Referrals[i].Keywords.Add(referringWords);

                //URLPresent = true;
                //KeywordPresent = true;
            //}

        }
        }
Run Code Online (Sandbox Code Playgroud)

JP *_*oto 6

具体问题是你在追逐自己的尾巴.每次向列表中添加新元素时,Refferals.Count都会上升(如果继续添加元素,则循环将永远不会结束).您应该将计数拉入变量并将其用于循环或使用类似Referrals.Contains ...

var refSize = Refferals.Count();

for (int i=0;i < refSize; i++)
{
 // same
}
Run Code Online (Sandbox Code Playgroud)