c#对象参数在分配参数后神秘清除
c# Object parameter mysteriously cleared after assigned a parameter
我是 C# 的新手。我想在 MouseUp
事件中收集 Paint 动作的所有点数。我把aPaintAction2
的参数传入Actions2
后,我把aPaintAction2
的内容清空了。不知何故,aPaintAction2
内容被清除后,Actions2
中的参数值(即aPaintAction2
传入的)也被清除。
谁能给我解释一下这是什么问题,为什么会这样?我只是想将aPaintAction2
持有的点传入Actions2
,Actions2
保留点参数,并清除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>();
这将创建一个新的空列表,但将旧列表保留在操作中。
我是 C# 的新手。我想在 MouseUp
事件中收集 Paint 动作的所有点数。我把aPaintAction2
的参数传入Actions2
后,我把aPaintAction2
的内容清空了。不知何故,aPaintAction2
内容被清除后,Actions2
中的参数值(即aPaintAction2
传入的)也被清除。
谁能给我解释一下这是什么问题,为什么会这样?我只是想将aPaintAction2
持有的点传入Actions2
,Actions2
保留点参数,并清除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>();
这将创建一个新的空列表,但将旧列表保留在操作中。