ref和out区别有哪些
类别:编程学习 浏览量:713
时间:2014-7-16 ref和out区别有哪些
ref和out区别有哪些通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out).
有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创建一个引用,他指向变量在内存中的位置.当引用被修改时,修改的是内存中的值,因此变量的值可以将被修改.当我们调用一个含有引用参数的方法时,方法中的参数将指向被传递给方法的相应变量,因此,我们会明白,为什么当修改参数变量的修改也将导致原来变量的值.
通过指定返回类型,可以从方法返回一个值,有时候(也许还没遇到,但是我们应该有这么个方法),需要返回多个值,虽然我们可以使用ref来完成,但是C#专门提供了一个属性类型,关键字为out.
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。
2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
4、ref传进去的参数在函数内部可以直接使用,而out不可。
5、系统对ref的限制是更少一些的。out虽然不要求在调用前一定要初始化,但是其值在函数内部是不可见的,也就是不能使用通过out传进来的值,并且一定要在函数内赋一个值。或者说函数承担初始化这个变量的责任。
6、若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值被传递到 ref 参数。
7、当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。
四、ref实例
using System;
class M
{
public void F(ref int i)
{
i=3;
}
}
class Test
{
int i=0; //要作为引用参数传递的变量必须明确赋值
static void Main()
{ //不能把int i=0;放在这里赋值,会报错说Test不包含i定义。
Test t=new Test();
Console.WriteLine("the value of i is:{0}",t.i);
M mm=new M();
mm.F(ref t.i); //作为引用参数传递
Console.WriteLine("now the value of i is :{0}",t.i); //i的值改变
}
}
五、out实例
class M { public void F(out int i) //这个方法和ref的方法都是一样,没什么不同 { i = 8; //返回前必须明确赋值 } } class Test { int i; //不用赋初值,这就是out和ref的区别,但声明还是要的 public static void Main() { Test t1 = new Test(); Console.WriteLine("the value of i is :{0}", t1.i); //输出是0; M m1 = new M(); m1.F(out t1.i); //i作为输出参数传递 ,输出是8 Console.WriteLine("now value of i is :{0}", t1.i); }}
您可能感兴趣
- ASP.NET 生成条形码
- ASP.NET实现多文件上传
- Asp.net Mvc模型绑定
- ASP.NET记录错误日志的方式有哪些
- ASP.NET中Web API的简单实例
- ASP.NET中重载(Overload)和覆写(Override)
- Asp.net导出Excel乱码
- asp.net中Session的操作
- 发送邮件的asp.net代码
- Asp.Net中索引器的用法
- asp.net网站如何优化
- ASP.NET URL路径问题
- ASP.NET自定义分页类
- 为什么asp.net网站第一次加载慢
- 如何注册asp.net 4.0 到iis
- asp.net操作cookie
- 你怎么忘了是说先爱我(你怎么忘了如何爱我)
- 做技术难吗(技术难不难)
- 林心如是谁(林心如是谁演的)
- 泰国安全吗(泰国安全吗2023)
- 菲律宾安全吗(菲律宾安全吗)
- 泰国旅游攻略(泰国旅游攻略必去景点)
热门推荐
- dedecms的简单说明(dedecms 后台假死问题解决方法)
- dedecms增加导航内容(织梦DEDECMS中让近三天发布的文章显示红色日期或加上new字或小图片的方法)
- jquery的动画效果api(jQuery框架实现元素显示及隐藏三种动画方式)
- dedecms修改教程(还原dedecms数据后系统基本参数空白的解决方法)
- 如何提高织梦dedecms的安全性(织梦DedeCms上flash彩色标签云tag的实现方法)
- 腾讯云服务器怎么安装win7(腾讯云主机上使用Windows系统时的激活与更新操作教程)
- mysql架构方案讲解(MySQL 搭建MHA架构部署的步骤)
- python拖动选择文件操作(python通过paramiko复制远程文件及文件目录到本地)
- docker的解剖(再见 Docker如何5分钟转型 containerd)
- docker的解剖(再见 Docker如何5分钟转型 containerd)