私がこれをひどく間違えなかったならば、この振る舞いは私にとって奇妙です。説明するのではなく、以下にサンプルコードを投稿し、yではなくxを出力する理由を教えてください。
private void button1_Click(object sender, EventArgs e)
{
List<int> l = new List<int>() { 1, 2, 3 };
Fuss(l);
MessageBox.Show(l.Count.ToString());
}
private void Fuss(List<int> l)
{
l.Add(4);
l.Add(5);
}
出力は3になると思いますが、出力は5になります。これを行うと、出力が5になる可能性があることを理解しています。
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());
}
private void Fuss(ref List<int> l)
{
l.Add(4);
l.Add(5);
}