黑马程序员技术交流社区

标题: out和ref修饰符用法与区别 [打印本页]

作者: LiangLiu    时间: 2013-4-19 23:05
标题: out和ref修饰符用法与区别
本帖最后由 LiangLiu 于 2013-4-20 23:51 编辑

out和ref修饰符怎么用,什么时候该用哪个,它们有哪些相似点,有哪些区别?
作者: 许庭洲    时间: 2013-4-20 07:08
1. ref必须先初始化,因为是引用,所以必须先“有”,才能引用;
2. out则是内部为外部赋值,所以不需要初始化,而且外部初始化也没用;
3. ref应用场景内部对外部的值进行改变;
4. out则是内部为外部变量赋值;
5. out一般用在函数有多个返回值的场所。
作者: 陈帅    时间: 2013-4-20 10:18
本帖最后由 陈帅 于 2013-4-20 10:24 编辑

额 这个问题,之前有人提过很多次啊,你找找之前的帖子吧~ 都回答挺详细的
作者: mdl    时间: 2013-4-20 10:37
区别如下:
1.ref是有进有出,而out是只出不进
2.使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化
3.out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
示例代码如下:
                             public int  RefValue(int i,ref int j)
                                                             {
                                                               int k = j;
                                                               j =222;
                                                               return i+k;
                                                                }
                                               public int OutValue(int i, out int j)
                                                              {
                                                                   j = 222;
                                                                   return i + j;
                                                                }
                                             private void cmdRef_Click(object sender, EventArgs e)
                                                               {
                                                                    int m = 0;
                                                                    MessageBox.Show(RefValue(1, ref m).ToString());
                                                                    MessageBox.Show(m.ToString());
                                                                }
                                                private void cmdOut_Click(object sender, EventArgs e)
                                                                    {
                                                                         int m;
                                                                         MessageBox.Show(OutValue(1, out m).ToString());
                                             MessageBox.Show(m.ToString());
                                                                      }
                                       
           
           
      

     
        
                     




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2