C#问题将静态成员添加到列表

时间:2016-03-18 15:47:05

标签: c# list static

我试图在列表框中添加一些对象(抛出绑定列表),但是当我显示列表时,类的静态成员始终具有相同的显示,即最后一个值。我的列表或类中没有其他属性的问题。

以我的形式:

    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

1 个答案:

答案 0 :(得分:2)

类的静态成员在此类类的所有实例中具有相同的值

在此处阅读更多内容:https://msdn.microsoft.com/fr-fr/library/98f28cdx.aspx

替换

  protected static int compt = 0; 

protected int compt = 0;