按值和按引用传递理解
1,按值传递
假设有一个类型A,它有一个int类型属性X。有一个方法Change()
public static void Change(A a)
{
a.X=2
}
static void main()
{
A a1=new A {X=1};
Change(a1);
Console.write(a1.X);
}
如果A是结构,就是按值传递
输出结果为1;a1传到方法Change中,就得到了结构在栈中a1的副本,实际上并没有修改到a1.X的值,所以结果为1
如果A是类,Change方法中a变量就得到了a1对象相同的引用,所以修改到了值,结果为2
2.ref和out关键字
它们的作用都是让参数按引用传递,使用含ref和out关键字方法的时候必须带上ref或者out关键字
使用ref时,变量必须在方法外初始化,使用out时可能不初始化