从堆栈浅析c#的ref、out关键字

篇外话:老了,是睡不好醒得早的充分条件还是充分必要条件呢?如果是后者,我是不是可以认为,睡不好,是因为我老了。。。。6点多起来纠结这篇文,好歹也是技术博,不能连篇门面都没。。。。。

      msdn中对ref关键字的介绍为:ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。传递到ref 参数的参数必须最先初始化。这与 out 不同,后者的参数在传递之前不需要显式初始化。因为ref和out仅仅是在运行时的处理方式不同,但在编译时的处理方式相同的。这点可以通过反编译的文件可以看出,不赘述。基于此点,本文只单独分析ref关键字,out大同小异,亦不赘述,读者自己构建相同的代码分析可得。

      在csdn中有一篇“对于关键字Ref和Out的理解”,原文有点小错,我基于那个文和代码,下面做一定的额外分析。感谢原文作者。先贴代码,然后具体分析。(点击+号展开代码)

Code

 

 

posted @ 2009-05-10 08:49  巡山小妖  阅读(299)  评论(0编辑  收藏  举报