大家好,我写了有史以来最简单的代码,我尝试了两件事,我什至从网上复制,但我不明白为什么它不起作用......这是我的代码: public static void insertToStart(Node<T> list, T toAdd) { list = new Node<T>(toAdd, list); }public static void insertToStart2(Node<T> list, T toAdd) { Node<T> list2 = new Node<T>(toAdd, list); list = list2; }两者都不起作用,我也不知道为什么……这是主要代码:Service<int>.insertToStart(list, 600); Service<int>.insertToStart2(list, 600);
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
之所以不起作用,是因为您试图将一个新Node<T>对象分配给list,该对象是通过值传递的参数。这样的修改仅在进行修改的方法中保持可见,但list对调用方中传递的变量没有影响。
您可以解决此问题,例如,要求list通过引用传递,即标记list参数a ref:
public static void insertToStart(ref Node<T> list, T toAdd)
{
list = new Node<T>(toAdd, list);
}
但是,此解决方案并不理想。更好的方法是封装Node<T>在一个NodeList<T>类中,并将head存储为私有字段,这样您就完全不需要传递list。
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消