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); }