gpt4 book ai didi

c# - 在方法中更改类属性值

转载 作者:行者123 更新时间:2023-12-02 00:49:05 27 4
gpt4 key购买 nike

我有以下代码

public class Myclass
{
public int someProp{ get; set; };
}
public class Program
{
public static void Main(string[] args)
{
Myclass m = new Myclass();
Console.WriteLine(m.someProp);
ChangeValue(m);
Console.WriteLine(m.someProp);
SetToNull(m);
Console.WriteLine(m.someProp);
Console.ReadKey();
}
static void ChangeValue(Myclass m)
{
m.someProp = 10;
}
static void SetToNull(Myclass m)
{
m = null;
}
}

结果是0 10 10
我想知道为什么在我将类设置为 null 后它显示 10。
传递给方法的 m 是对象的副本还是只是引用。

最佳答案

Is the m which is pass to the method is a copy of the object or it's just reference.

您正在将“m”引用的副本传递给这些方法。如果您想传递对内存中 MyClass 对象的实际引用,您可以使用 ref 关键字:

public class Program
{
public static void Main(string[] args)
{
Myclass m = new Myclass();
SetToNull(ref m);
if(m == null)
Console.WriteLine("NULL!");
Console.ReadKey();
}

static void SetToNull(ref Myclass m)
{
m = null;
}
}

然后 SetToNull 方法会将实际的“m”引用设置为空引用。

关于c# - 在方法中更改类属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430224/

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