ref 的使用场景:调用方法传递参数的时候,对于值类型是“整体拷贝”,在方法的修改只在方法内有效,方法结束,从栈上弹出。在方法外不会产生副作用。ref 就是针对这种情况设计的,ref修饰的参数,强制参数按引用传递,在方法内的修改产生副作用。
out 的使用场景:与ref 类似。
ref 与 out的区别在于:
1、ref 必须在方法调用前,进行显式的初始化。
2、out 不需要再方法调用前进行初始化,但是在方法返回之前,必须完成赋值操作。
方法定义和方法调用的地方,都必须显式地使用关键字ref 或者out,ref 与 out的实现原理应该是 对值类型进行了装箱。