C# Trouble testing whether a list of game objects contains a specific game object

Hello. First time help seeker, and I greatly appreciate any help you guys can give.

I want to build a list of game objects based on a certain criteria. To keep this example simple, let’s say that this list will be game objects that are within sight of the player at a specific frame X. Then I want to later test a selected game object to see if it was spotted by the player during frame X.

Here’s a simplified version of the code:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class PlayerControls : MonoBehaviour {

     public List <GameObject> spotted = new List<GameObject>();
     public GameObject enemyObject; // starts as null, used to hold a specific
                                    // object for testing, then set to null again

     void ScanArea()
     {
          RaycastHit hit;

          if (Physics.Linecast(player.position, target1.position, out hit))
          {						
               if (currentHit.collider.gameObject.tag == "Enemy")
               {
                    spotted.Add(currentHit.collider.gameObject);
               }
          }
          // multiple targets will be linecasted in this way
     }

     void TestGameObject()
     {
          enemyObject = // some object that is going to be tested

          foreach (GameObject obj in spotted)
          {
               if (enemyObject == obj)
               {
                    DoSomething();
               }
          }
     }
}

What is happening is that the test works when I test the object that happened to be the first object added to the list “spotted” but if I test any of the other objects that I know are in that list, they do not work.

I have used a workaround where I alter the color of spotted objects then test for color when I do my test, but that seems unnecessary and unideal. I’m sure I’m missing something obvious but I can’t seem to figure out what :X

EDIT: looks like this is the error that might be causing me troubles: “InvalidOperationException: Collection was modified; enumeration operation may not execute.” I’m not really sure why I’m getting this error though.

Well I hate to be that guy but after hours and hours of failing to fix the problem. I think I have found a solution within 10 minutes of asking for help.

I added “break” after DoSomething and made DoSomething a Coroutine.

DoSomething was actually clearing my list “spotted” while the list was still being used in foreach which was causing the error.