相关疑难解决方法(0)

为什么列表在没有引用的情况下传递给一个像ref一样传递的函数?

如果我没有得到这个非常错误,这种行为对我来说很奇怪.而不是解释,我将在下面发布一个示例代码,请告诉我为什么我得到输出x而不是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());
    }

    private void Fuss(List<int> l)
    {
        l.Add(4);
        l.Add(5);
    }
Run Code Online (Sandbox Code Playgroud)

输出应该,我假设是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);
    }
Run Code Online (Sandbox Code Playgroud)

c# ref argument-passing c#-4.0

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

argument-passing ×1

c# ×1

c#-4.0 ×1

ref ×1