郑琦的博客

欢迎讨论,chn_zhengqi@outlook.com

C#中ref和out的区别

在C#中, ref和out看起来有相似的作用,但是他们是有区别的。

  在C#编程中,有时会希望使用引用形式从方法中接收值,但不传入。例如,可能有一个执行某种功能的方法,比如打开在引用形参中返回成功或失败代码的网络套接字。在此情况下,没有信息传递方法,但有从方法传出的信息。这种情况存在的问题是在调用前必须将ref形参初始化为一个值。因此,要使用ref形参,需要赋予实参一个哑元值,从而可以满足这一约束。C#中out形参就可以解决此类问题。
  out形参类似于ref形参,但它只能用来将值从方法中传出。在调用之前,并不需要为out形参的变量赋予初始值。在方法中,out形参总是被认为是未赋值的,但在方法结束前必须赋于形参一个值。因此,当调用方法后,out形参引用的变量会包含一个值。
  使用ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。简单点说就是,使用了ref和out的效果就几乎和C中使用了指针变量一样。它能够让你直接对原数进行操作,而不是对那个原数的Copy进行操作。
  

也就是说,out参数一般用于方法需要返回多个不同类型的返回值时使用(如bool res int.tryparse(string s,out int num);既返回是否转换成功的布尔值,也返回转换后的int类型),ref参数一般用于函数内部需要修改外部的数值,两者的作用都类似于C语言中的指针,
但是,使用out时,方法外部声明参数时不必初始化,初始化也没有用,因为初始化和赋值必须在方法内进行。
然而使用ref时,方法外部在传参前必须进行初始化,否则会报错

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uinyu/article/details/49925129
文章标签: c#
个人分类: 笔记 C#
想对作者说点什么? 我来说一句

C#中关键字refout区别

2011年02月24日 38KB 下载

C_中outref区别

2012年04月10日 1KB 下载

outref区别

2007年08月18日 158B 下载

没有更多推荐了,返回首页

不良信息举报

C#中ref和out的区别

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭