ref和out有什么作用

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 15:49:46
ref和out有什么作用ref和out有什么作用ref和out有什么作用Usera=newUser();Userb=a;上面是把a的引用给了b,所以用b等于用a.但问题是,这个"引用"也是一种对象,也

ref和out有什么作用
ref和out有什么作用

ref和out有什么作用
User a = new User();
User b = a;
上面是把a的引用给了b,所以用b等于用a.
但问题是,这个"引用"也是一种对象,也就是 '"=" 号的返回值.所以,a和b只是看起来是一个对象,实际上不是,它们实际上是共用同一个"引用",至于这个"引用"对象,我也不太清楚,就算是微软的一种实现方式吧.
于是又有一个问题,不是所有的 = 号都是返回 "引用对象",有的 = 号是返回一个"被复制"的对象,比如所有的值类型使用 = 号就是这样的(至于为什么,你猜?).使用ref和out,就可以强制改变那个赋值方式变成返回引用而不是被复制的对象,这是其一功能.
第二个功能就是限制参数的使用环境,ref就是限制该参数在传入方法前必须被赋值,out就是限制该参数在被传入方法后必须被赋值.
ref的使用场景:"传进来的参数要有意义哈(比如id有值),方法结束后我会把它填满给你接着用的!"
out的使用场景:"传一个空值的参数进来也可以,因为它只是我一个用来装返回值的容器而已.没办法,我需要返回多个返回值,但是.net只允许返回一个,我又希望自己的返回值是看得见有意义的(比如:int.TryParse(str,intValue),人家一看就知道第二个参数是干嘛的,同时它又是返回值!)".