c#对象参数在分配参数后神秘清除

c# Object parameter mysteriously cleared after assigned a parameter

我是 C# 的新手。我想在 MouseUp 事件中收集 Paint 动作的所有点数。我把aPaintAction2的参数传入Actions2后,我把aPaintAction2的内容清空了。不知何故,aPaintAction2内容被清除后,Actions2中的参数值(即aPaintAction2传入的)也被清除。

谁能给我解释一下这是什么问题,为什么会这样?我只是想将aPaintAction2持有的点传入Actions2Actions2保留点参数,并清除aPaintAction2以便aPaintAction2可以持有新的点。谢谢。

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (moving && x != -1 && y != -1)
        {
            aPaintAction2.Add(e.Location);
            x = e.X;
            y = e.Y;
        }
    }

    private List<AnnotationAction> Actions2 = new List<AnnotationAction>();
    private List<Point> aPaintAction2 = new List<Point>();
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        // save a Paint action
        Actions2.Add(new AnnotationAction(newActionId, pen.Color, pen.Width, aPaintAction2));

        aPaintAction2.Clear();

        moving = false;
        x = -1;
        y = -1;
        newActionId++;
    }

而不是

aPaintAction2.Clear();

从列表中删除所有项目,尝试:

aPaintAction2 = new List<Point>();

这将创建一个新的空列表,但将旧列表保留在操作中。