If I did not get this terribly wrong, this behaviour is strange for me. Rather than explaining, I'll post a sample code below and please tell me why does I get output x and not y.
    private void button1_Click(object sender, EventArgs e)
    {
        List<int> l = new List<int>() { 1, 2, 3 };
        Fuss(l);
        MessageBox.Show(l.Count.ToString()); // output is 5
    }
    private void Fuss(List<int> l)
    {
        l.Add(4);
        l.Add(5);
    }
Output should, I assume would be 3. But I get the output as 5. I understand the output can be 5 if I do this:
    private void button1_Click(object sender, EventArgs e)
    {
        List<int> l = new List<int>() { 1, 2, 3 };
        Fuss(ref l);
        MessageBox.Show(l.Count.ToString()); // output is 5
    }
    private void Fuss(ref List<int> l)
    {
        l.Add(4);
        l.Add(5);
    }
 
     
     
     
     
     
     
     
    