这几天遇到了一个奇怪的bug,找了好久问题发现了原来是对ref和out两个关键字理解有问题产生的。
ref:
1 | static void Main(string[] args) |
out:
1 | static void Main(string[] args) |
区别:
1.ref会把参数和引用都传入到方法之中,并且引用不能为空,所以在ref的程序里为a和b都赋值,如果没有赋值会报错。
2.out只会把引用传入到方法之中,并不会传入参数,所以其实out程序里可以不对a赋值,哪怕赋值也不会被传入。在out程序的Add方法中,a只能被赋值1+2,如果赋值a +b会报错,因为这时候a和b的参数都是空,参数并没有传进来。
有人总结的口诀是:ref有进有出,out只出不进。
ref的主要应用范围是方法里需要修改引用内容的,而out的主要应用范围是可以间接解决需要多个返回值的情况。