在函数addStartNode中,我创建了一个新的节点'temp',其值设置为'head'的值。然后我设置为一个新的节点,其值不同'v'。
但是,当我打印'temp'和'head'的值时,它会显示相同的内容。
我尝试了很多不同的方法,包括复制构造函数,但它似乎没有改变任何东西。
任何帮助都会很棒!
var songs = await Task.Run(async () => await DependencyService.Get<IMedia>().GetSongs(progressUpdate));
答案 0 :(得分:3)
您已在Node类中将value
声明为static
。
如果属性是静态的,那么它将由Node的所有实例共享。
更改:
private static int value;
到
private int value;
想象一下,您将代码更改为此代码:
static class Node {
private static int nbOfNode = 0;
private int value;
Node(int v) {
nbOfNode++;
value = v;
}
int getValue() {
return value;
}
static int getNbOfNode() {
return nbOfNode;
}
}
现在value
不是静态的,那么Node的每个实例都将具有其正确的值。
另一方面
nbOfNode
是静态的,然后它将在Node类的所有实例之间共享,因为它是类级变量。
现在如果你运行这个:
Node n1 = new Node(11);
System.out.println(n1.getValue());
System.out.println(Node.getNbOfNode());
Node n2 = new Node(22);
System.out.println(n2.getValue());
System.out.println(Node.getNbOfNode());
它会产生:
11 - 节点n1的正确值
1 - 递增的共享值
22 - 节点n2的正确值
2 - 共享值的第二个增量
在实例化n2期间,构造函数将增加与之前通过实例化n1增加的变量相同的变量