C#将静态成员添加到列表中的问题
我试图在列表框中添加一些对象(抛出一个绑定列表),但是当我显示列表时,类的静态成员始终具有相同的显示,即最后一个值。我的列表或类中的其他属性没有问题 以我的名义:C#将静态成员添加到列表中的问题,c#,list,static,C#,List,Static,我试图在列表框中添加一些对象(抛出一个绑定列表),但是当我显示列表时,类的静态成员始终具有相同的显示,即最后一个值。我的列表或类中的其他属性没有问题 以我的名义: private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { shape.gsPtAcc = ptdep; if (shape is Segment) { seg
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;
}
}
在我的母亲班,shape:
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;
}
}
}
名称空间MyGraphicComponents
{
抽象类形状:IComparable、IDrawable、INotifyPropertyChanged、IIsPointIn
{
受保护的MyPoint-ptAcc;
公共MyPoint gsPtAcc
{
获取{return ptAcc;}
设置{ptAcc=value;}
}
受保护的静态int compt=0;
公共整数
{
获取{return compt;}
设置{compt=value;}
}
公共整数递增数()
{
return++compt;
}
}
}
因此,当我添加形状时,结果将是:
- 在控制台中: 1. 2. 3. 4. 五,
- 但在列表框中: 5. 5. 5. 5. 五,
protected static int compt = 0;
与
类的静态成员在该类的所有实例中都具有相同的值 请在此处阅读更多信息: 替换
protected static int compt = 0;
与
好的,谢谢,我用数字作为属性解决了这个问题,通过这种方式,我能够保持静态属性,只需要做
number=incremmnumber()
@RemiHirtz为什么你需要这个静态属性它似乎是静态的一个简单用法它是为了学校,我没有选择:sOk谢谢,我用数字作为属性解决了这个问题,通过这种方式,我已经能够保持静态属性,只需做number=incremNumber()
@RemiHirtz你为什么需要这个静态属性它看起来像是对static的一种简单使用它是为了学校,我别无选择:s