我有这段样例代码:
public class MyClass
{
public int Value { get; set; }
}
class Program
{
public static void Foo(MyClass v)
{
v.Value = 2;
v = new MyClass();
v.Value = 3;
}
static void Main(string[] args)
{
var m = new MyClass();
m.Value = 1;
Foo(m);
Console.Write(m.Value);
Console.ReadLine();
}
}
我想了解为什么输出是2而不是3,您能否给我一些清晰的解释呢?谢谢。
v
更像是一个引用而不是实例,并且这是按值传递的(这就是为什么问题有意义),但是类的实例由v
引用传递(即由您在括号中正确得出的方式)。 - E. Shcherbov
是一个引用——它是指向类实例的值,但是看到你的句子有点复杂!我花了一分钟才理解它! - Tomasz Juszczak