值类型:变量中存储的是具体的数值
引用类型:变量中存储的是内存地址(实例对象的内存地址)。
class Program
{
static void DoWork()
{
int i = 0;//i是值类型,i中存储的是具体数值
Console.WriteLine(i);//输出值为0
Pass.Value(i);//调用pass的value方法,将i的值0传递给value方法
Console.WriteLine(i);//输出值为0。
//总结:值类型变量中存储的是具体的数值。做为参数传递时也是具体的数值。
WrappedInt wi = new WrappedInt();//wi是引用类型,wi中存储的是实例对象wrappedint的内存地址,也就是指向了wrappedint。
Console.WriteLine(wi.Number);//输出wrappedint对象的mumber字段值为0
Pass.Reference(wi);//调用reference方法,将wi中的地址传递给reference方法
Console.WriteLine(wi.Number);//此时输出字段值已变成42
//总结:引用类型变量中存储的是实例对象的内存地址。做为参数传递时传递的也是内存地址。
Console.ReadKey();
}
class Pass
{
public static void Value(int param)//当i的值传递过来时param的值为0
{
param = 42;//将42赋值给param,此时param的值为42
}
public static void Reference(WrappedInt param)//当wi中的地址传递过来时,param中存储的也是对象wrappedint的内存地址,也就是指向了wrappedint。
{
param.Number = 42;//将42赋值给wrappedint对象number字段
}
}
class WrappedInt
{
public int Number;//编译器自动初始化number值为0
}
}