gpt4 book ai didi

c# - 为什么我不能在函数中实例化一个对象

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:36 25 4
gpt4 key购买 nike

所以基本上我有一个 NodeTree 类:

public class NodeTree
{
public NodeTree(int value, NodeTree left, NodeTree right)
{
Value = value;
Right = right;
Left = left;
}

public int Value { get; set; }
public NodeTree Right { get; set; }
public NodeTree Left { get; set; }
}

在我的主要任务中,我想做类似的事情

NodeTree root = null;
Algo.InsertValueIt(root, 8);

其中 InsertValueIt() 是我的静态类 Algo 中的一个方法,它执行以下操作:

 public static void InsertValueIt(NodeTree root, int val)
{
var newNode = new NodeTree(val, null, null);
if (root == null)
{
root = newNode;
}
}

在我的方法中一切都按预期工作,但回到我的 main,我的对象根仍然为空。我感到困惑的原因是我给了我的方法一个引用,所以它应该将地址的值修改为我正在分配的新空间。

我想我可以通过返回一个 NodeTree 来解决我的问题,但是有没有办法使用 void 返回类型来解决这个问题?

最佳答案

您需要定义要通过引用传递的参数,以便修改原始值(注意 ref 关键字):

public static void InsertValueIt(ref NodeTree root, int val) {
...

另外在调用方法时,需要用ref标记参数:

Algo.InsertValueIt(ref root, 8);

...否则您只能修改该函数中的本地副本。

关于c# - 为什么我不能在函数中实例化一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35313148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com