• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
汇小流以成江海,积毫沙乃成高塔
博客园    首页    新随笔    联系   管理    订阅  订阅

ref out 的区别

在C#中,ref与out是很特殊的两个关键字。使用它们,可以使参数按照引用来传递。

总的来说,通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.但是我们想让值受到改变怎么办呢?这就是ref  跟out的好处了。

先上例子吧:

 1    int arg = 42;
 2             AddMe(arg);
 3             //结果为42,原因:值传递,传递的是一个复本,不对原来的值产生影响
 4             MessageBox.Show("arg:"+arg);
 5 
 6             //ref 使用
 7             AddMe_Two(ref arg);
 8             //结果43,原因ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中
 9             MessageBox.Show("arg:" + arg);
10 
11             //out 使用
12             int temp;
13             OutTest(out temp);
14             //结果42,原因out关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化
15             MessageBox.Show("temp:"+temp);
16         /// <summary>
17         /// out
18         /// </summary>
19         /// <param name="parm"></param>
20         public void OutTest(out int parm) 
21         {
22             parm = 42;
23         }
24         /// <summary>
25         /// ref
26         /// </summary>
27         /// <param name="parm"></param>
28         public void AddMe_Two(ref int parm)
29         {
30             parm++;
31         }
32 
33         public void AddMe(int parm)
34         {
35             parm++;
36         }

总结:

1.ref参数在使用前必需初始化,而out不需要

2.out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

 

 

 

 

 

 

posted @ 2013-03-14 10:03  小流  阅读(346)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3