0

我的问题是如何更改以下代码以创建 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;
    }
}
4

7 回答 7

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 ++;
    }
}
于 2012-08-21T14:16:43.783 回答
3

制作实例字段而不是numb字段。删除:static

public int numb;

static所有实例都OBJ使用同一个int命名的numb.

于 2012-08-21T14:16:08.980 回答
2

任何时候使用new,都会获得一个新实例。代码似乎没问题。唯一的问题是您应该staticpublic static int numb.

class OBJ    {
  public int numb;

  public OBJ(int i)
  {
      numb = i;
  }
}
于 2012-08-21T14:17:28.710 回答
2

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

于 2012-08-21T14:16:25.560 回答
2

我不确定我是否理解您的问题,但请尝试删除 static 关键字。

于 2012-08-21T14:16:29.977 回答
1

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

于 2012-08-21T14:17:28.637 回答
0

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

于 2012-08-21T14:27:28.700 回答