我试图在列表框中添加一些对象(抛出绑定列表),但是当我显示列表时,类的静态成员始终具有相同的显示,即最后一个值。我的列表或类中没有其他属性的问题。
以我的形式:
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
shape.gsPtAcc = ptdep;
if (shape is Segment)
{
seg = shape as Segment;
seg.gsScPtAcc = ptarr;
}
shape.incremNumber();
Console.WriteLine(shape.Number);//write the correct value
shapeList.Add(shape);
listBox1.DataSource = null;
listBox1.DataSource = shapeList;
}
}
在我的母班上,塑造:
namespace MyGraphicComponents
{
abstract class Shape: IComparable<Shape>, IDrawable, INotifyPropertyChanged, IIsPointIn
{
protected MyPoint ptAcc;
public MyPoint gsPtAcc
{
get { return ptAcc; }
set { ptAcc = value; }
}
protected static int compt = 0;
public int Number
{
get { return compt; }
set { compt = value; }
}
public int incremNumber ()
{
return ++compt;
}
}
}
结果,当我添加形状时将是:
在控制台中: 1 2 3 4 5
但在列表框中: 五 五 五 五 5
答案 0 :(得分:2)
类的静态成员在此类类的所有实例中具有相同的值
在此处阅读更多内容:https://msdn.microsoft.com/fr-fr/library/98f28cdx.aspx
替换
protected static int compt = 0;
带
protected int compt = 0;