随笔 - 12  文章 - 0 评论 - 45 trackbacks - 9
<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

与我联系

搜索

 

常用链接

留言簿(6)

我的标签

随笔分类(18)

随笔档案(10)

最新随笔

最新评论

阅读排行榜

评论排行榜

    out 和 ref 关键字非常的相似都是以引用的方式来传递。不同的地方在与ref要求传递的变量必须进行初始化。看看下面例子中的表现:

 1class OutRefTest
 2{
 3 public void Main()
 4 {
 5   int parm;
 6   TestOut(out parm);
 7   //parm的值变成了10.
 8   Console.WriteLine("{0}", parm);
 9   
10   //parm2必须进行初始化
11   int parm2 = 2;
12   TestRef(ref parm2);
13   //parm的值变成了10.
14   Console.WriteLine("{0}", parm);
15   Console.Read();
16 }

17 public void TestOut(out int parm)
18 {
19   parm = 10 //必须赋值.
20 }

21 public void TestRef(ref int parm)
22 {
23  parm = parm * 10//必须赋值.
24 }

25}

    注意:
      1.在使用out来传递变量的时候可以不必为变量parm初始化,而使用ref来传递变量的时候必须为变量parm2进行初始化工作。
      2.如果在方法的参数列表中包含了out 或 ref关键字的话,就必须为相应的参数赋值。如方法TestOut 和 TestRef中表现的一样。 
    使用的时机:
      如果你想让你写的方法可以一次返回多个值就需要使用out 或 ref来实现。

给个评价!谢谢!

posted on 2007-09-18 13:23 蔡鹏 阅读(322) 评论(8)  编辑 收藏 所属分类: C#

FeedBack:
#1楼  2007-09-20 00:34 抬头眯眼阳光      
已经阅读!
  回复  引用  查看    
报到,板凳!
  回复  引用    
#3楼  2008-01-22 17:19 光光 [未注册用户]
我把代码试了下,显示的2个值都是10,不是应该一个是10,一个是20吗?还有个问题,您说“你想让你写的方法可以一次返回多个值就需要使用out 或 ref来实现。”,怎么返回多个值啊?一个方法能返回>1个值?请老师说下。
  回复  引用    
#4楼 [楼主] 2008-01-22 19:56 蔡鹏      
对是20.可以在多个参数上使用out呀.
  回复  引用  查看    
#5楼  2008-06-21 20:12 126陈刚 [未注册用户]
out是把一个参数传到方法里面。然后经过方法的处理再把这个参数返回?
不知道这样理解对不对。。。
  回复  引用    
#6楼  2008-06-21 21:49 朱建华 [未注册用户]
我把代码也试了一下的,开始是输入出的两个10,那是因为:
TestRef(ref parm2);
Console.WriteLine("{0}", parm);
这里传入的值并不是parm2,而是parm,而parm并没有赋初始值,所以输出的还是和上面的结果一样是10.如果传入的参数改为parm2的话,则输出的就会为20了.

  回复  引用    
ref 是不是跟不使用任何关键字的效果一样?
  回复  引用    
#8楼  2008-07-11 20:48 Army_C [未注册用户]
还差一个params参数的方式吧,也可以讲讲吗?
第一次报道!
  回复  引用    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-09-19 21:09 编辑过