using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Program1
{
class MyClass
{
public int Val = 20;
}
class Program
{
static void Method(MyClass f1)
{
f1.Val = 40;
Console.WriteLine("对成员赋值后:{0}",f1.Val);
f1 = new MyClass();
Console.WriteLine("创建新对象的值:{0}", f1.Val);
}
static void Main(string[] args)
{
MyClass a1 = new MyClass();
Console.WriteLine("对成员赋值前:{0}", a1.Val);
Method(a1);
Console.WriteLine("对成员赋值前:{0}", a1.Val);
Console.ReadKey();
}
}
}
运行结果:
1方法被调用之前,实参a1和形参f1指向堆中相同的对象
2在方法中对类的字段val重新赋值后,都指向新值50
3创建新对象后,在堆中重新开辟空间,并赋值给形参f1指向的空间的值为类字段的初始值
4方法调用完后,形参和指向的数据域被弹出
和