ref和out有什么作用

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 19:31:20
ref和out有什么作用
xTNQ~ܛB(WE{HibPw(ҊoUԢ]D, /s٫BYl|}3lh{3 vT3EY2We(_f?oѸ/Ţ}?rOڈaİ:1"2ͥ9@#F n~`W5_R-DJV".0qO܌1{!mH>P&؊-*lCjm0ꉀ2 wFg*Y ,H<|@;Js > "ɫy^+e>iMhQ< ]>v ̻VA}"W|p303-LA{Ha/w Jf65,U=KƜ_|b51 |NPe,e8i\Ib̺ ;zw",2vD.UIϊ˥?OՠѯYCJhiZbB98źcbǴ^܇^"zWCwii`R\zcMr3f~ Bg241]k}EYiƻMMw Aj g :t"c$.U7r< Tm!Lƫ *XNWLnŒ7/DԟHe ܉db4/wػK9B2~,hGֻ:dv8?ݍB

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),人家一看就知道第二个参数是干嘛的,同时它又是返回值!)".