I'm striking a roadblock in coding. I'm coding in C#, making a program with Monogame.
I have a list of units, and I'm trying to do mouse picking with them. I shoot a ray out from the mouse into the screen, and find which object is the first one it hits.
//  A method to find which units are currently under the mouse.
    static public void FindPickedUnits(string ID)
    {
        foreach (Unit unit in ListDictionary[ID])
        {
            //  Run the code to check whether or not it is picked, and returns a float representing how close it is.
            unit.IsPicked = Cursor.Pick(unit.Collisions);
            //  And if it is picked...
            if (unit.IsPicked != null)
            {
                //  We will clone it as the closest unit if none exist, or...
                if (ClosestUnit == null)
                {
                    ClosestUnit = unit;
                }
                //  if one already does, overwrite it if it's even closer.
                else if (unit.IsPicked < ClosestUnit.IsPicked)
                {
                    ClosestUnit = unit;
                    Console.WriteLine("The new closest unit is at X" + unit.Position.X + " Y" + unit.Position.Y);
                }
            }
        }
    }
    //  elsewhere...
    Console.WriteLine("The selected unit's color is " + ClosestUnit.Tint);
This code clones the picked unit into the ClosestUnit object, which then I can read from whenever I want, no problem.
HOWEVER
I don't want to purely read the values of the closest unit, I want to WRITE to them, and change some of them. But if I change the values of the ClosestUnit object, it doesn't reflect back to the actual unit in the list of units.
TL;DR I want to be able to single a unit out of a list of units, and then write to it elsewhere in the code. If the ClosestUnit object could function akin to a ref parameter does, directly referencing the actual unit in the list instead of being a clone, this would be easy, but I don't know how to make it do that.
What is the most efficient way to handle this problem, or avoid it?
