所以我正在浏览 Illustrated C# 2012,除了本章的这一部分,我基本上得到了一切,下面是源代码:
class MyClass
{
public int Val = 20;
}
class Program
{
static void RefAsParameter(MyClass f1)
{
f1.Val = 50;
Console.WriteLine( "After member assignment: {0}", f1.Val );
f1 = new MyClass();
Console.WriteLine( "After new object creation: {0}", f1.Val );
}
static void Main()
{
MyClass a1 = new MyClass();
Console.WriteLine( "Before method call: {0}", a1.Val );
RefAsParameter( a1 );
Console.WriteLine( "After method call: {0}", a1.Val );
}
}
此代码产生以下输出:
Before method call: 20
After member assignment: 50
After new object creation: 20
After method call: 50
所以......我基本上理解了最后一个 Console.WriteLine() 的大部分内容。为什么它是 50“方法调用后”。既然它创建了一个新的“MyClass()”,它不应该还是 20 吗?显然我错过了一些非常明显的东西。是因为 f1.Val “永远”改变了 Myclass Public 价值还是什么?
对此有点困惑。谢谢。我总体上理解“参考”,这让我有点难过。