按值和按引用传递理解

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时可能不初始化

猜你喜欢

转载自www.cnblogs.com/lxy6/p/9108784.html
今日推荐