c#创建新的唯一对象实例

时间:2012-08-21 14:14:21

标签: c# memory

我的问题是如何更改以下代码以创建10个不同的对象实例,而不是10个相同的对象。

 List <OBJ> newList = new List<OBJ> ();
 for (int i = 0; i < 10; i++){
     OBJ newOBJ = new OBJ (i);
     newList.Add(newOBJ);  
 }

OBJ类是:

 class OBJ    {
    public static int numb;

    public OBJ(int i)
    {
        numb = i;
    }
}

7 个答案:

答案 0 :(得分:8)

这是10个不同的对象。但由于数字为static,因此它们都具有相同的数字。

如果你愿意,可以把它变成非静态的。

class OBJ    {
    public int numb;

    public OBJ(int i)
    {
        numb = i;
    }
}

如果要计算实例数,可以将其保留为静态。

class OBJ    {
    public static int num_instances;
    public int number;

    public OBJ(int i)
    {
        number = i;
        num_instances ++;
    }
}

答案 1 :(得分:3)

使numb成为实例字段,而不是字段。删除static

public int numb;

static OBJ的所有实例使用名为int的同一numb时,<{1}}。

答案 2 :(得分:2)

这就是你的代码已经在做的事情。 static成员上的numb关键字会在OBJ的所有实例中共享。

答案 3 :(得分:2)

我不确定我理解你的问题,但请尝试删除静态关键字。

答案 4 :(得分:2)

只要您使用new,就会获得一个新实例。代码似乎没问题。唯一的问题是您应该从static删除public static int numb

class OBJ    {
  public int numb;

  public OBJ(int i)
  {
      numb = i;
  }
}

答案 5 :(得分:1)

您正在创建新实例,但您唯一的属性是静态的,可在所有实例之间共享。

答案 6 :(得分:0)

您应该只删除static关键字...看看这个: http://msdn.microsoft.com/en-us/library/98f28cdx(v=vs.100).aspx