在构造函数中增加唯一ID编号。

11 浏览
0 Comments

在构造函数中增加唯一ID编号。

我正在C#中开发一个对象,我需要该对象的每个实例都具有唯一的id。我的解决方法很简单,就是在类中放置一个称为idCount的成员变量,并在构造函数中执行以下操作:

objectID = idCount;
idCount++;

我认为这将解决我的问题,但似乎idCount从未得到递增,即使构造函数被多次调用。例如,如果idCount = 1,则所有对象的objectID仍为1。为什么idCount++不起作用呢?

任何帮助都将受到赞赏。如果我的解释不足,请原谅,我不知道如何解释。

admin 更改状态以发布 2023年5月24日
0
0 Comments

您可以在类中使用静态变量,在对象初始化时进行更新。

public class Foo
{
   private static int ID = 0;
   private int myId = 0;
   public int MyId
   {
      get { return myId; }
   }
   public Foo()
   {
       ID++;
       this.myId = ID;
   }
}

0
0 Comments

如果你想每个对象都包含它被创建时的 id,你需要在你的类中创建一个静态属性,并将它分配给类内的实例变量。

另外,如果你同时更新多个实例,你需要使用 Interlocked.Increment 在计数器上:

    public class Foo
    {
        private static int m_Counter = 0;
        public int Id { get; set; }
        public Foo()
        {
            this.Id = System.Threading.Interlocked.Increment(ref m_Counter);
        }
    }

0