iva*_*lee 10 c# constructor auto-increment
我正在使用C#中的一个对象,我需要对象的每个实例都有一个唯一的id.我对此的解决方案只是放置一个成员变量,我在类中和我将拥有的构造函数中调用idCount:
objectID = idCount;
idCount++;
Run Code Online (Sandbox Code Playgroud)
我认为这可以解决我的问题,但似乎idCount永远不会增加,即使构造函数被多次调用.例如,如果idCount = 1,则所有对象的objectID仍为1.为什么idCount ++不起作用?
任何帮助,将不胜感激.抱歉,如果我的解释不充分,我不确定如何解释它.
com*_*ech 26
您需要在类中使用静态属性,但是,如果希望每个对象都包含它创建的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);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在类中使用静态变量,该变量会在对象初始化时更新。
public class Foo
{
private static int ID = 0;
private int myId = 0;
public int MyId
{
get { return myId; }
}
public Foo()
{
ID++;
this.myId = ID;
}
}
Run Code Online (Sandbox Code Playgroud)