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