本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、毕业设计辅导
 当前位置:文章中心 >> Asp.net专题(WCF/WPF/WF)
立即购买视频教程 C#里面的ref和out区别
夜鹰教程网 来源:www.yyjcw.com 日期:2018/1/4 13:08:41
C#里面的ref和out区别

这篇文章不能解决你的问题?我们还有相关视频教程哦!

QQ:1416759661 新手QQ群:7835003  加Q远程协助!

在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

首先我们要知道ref和out在C#里面是什么?

答:它们俩是C#里面的关键字。

他们俩是干啥的呢?

答:他们俩是方法参数的修饰符号,一但使用,方法定义和方法都用都要使用这个关键字,这一点是死规定。

好了废话不多说,既然是修饰符,使用了他们一定是要有意义的对吧。我们先来看一手微软官方定义。




如果大家通过上面微软官方的定义明白了这个参数。那很好,下面的我写的就不需要看啦!还有疑惑就继续往下看。保证你能懂。


这里我先不直接讲解,我先掏出一手代码,然后通过代码讲解。


复制代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace ref和outTest

{

    class Program

    {

        static void Main(string[] args)

        {

            int i = 0;

            Test(i);

            Console.WriteLine(i.ToString());

            Console.ReadKey();

        }

        static void Test(int i)

        {

            i++;

            Console.WriteLine(i.ToString());

            

        }

    }

}

复制代码

  这代码没啥含量,学过代码都看到懂的,就是定义个i变量,然后调用Test方法,方法里面对i进行+1的操作然后打印i的值,main函数里也打印一次i的值。


结果大家应该也都知道 方法里面打印的是main方法打印的是0,方法里面是1。


  因为默认情况下,我们方法传递变量默认是是"值传递"的方式。这是什么意思呢?说到这里要先解释下引用类型和值类型,可以看我的一篇博客----->传送门。我这里简单说下。引用类型的值存的是指向对象本身或者值的地址,值类型的变量存的是对象的本身或者是值。一个经典的比喻,值类型就是报纸,引用类型就是网页。我看报纸就要买一份报纸。我得到的就是实际的报纸,但是我浏览网页只要输入一个Url地址。Url指向了实际网站内容。


  解释完毕,我们再把思路拉回来,我们说方法传递的变量默认是"值传递"。就是说我报纸看的哈哈大笑,这时候小明也想看。我就又买了一份给他。但是我们看的内容是一样的。但是我的报纸还是我的报纸。小明看完报纸就撕了报纸都不影响我,值传递就是方法的变量的值传递值之后。不论方法里面对这个值进行了什么操作。都不影响我方法外面的i。所以这个地方输出的结果是 1和0


 


我觉得上面应该讲的还挺易懂的吧,还有疑问算我失败。


接下来我们加上Ref关键字了,改一手代码


复制代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace ref和outTest

{

    class Program

    {

        static void Main(string[] args)

        {

            int i = 0;

            Test(ref i);

            Console.WriteLine(i.ToString());

            Console.ReadKey();

        }

        static void Test(ref int i)

        {

            i++;

            Console.WriteLine(i.ToString());

            

        }

    }

}

复制代码

ref关键字,文章的开头微软的官方解释已经说明了。使用了Ref参数之后,方法参数的传递是按"引用传递"的,"引用传递"什么意思上面讲解我也解释了。举个例子,这就比如我看到某某网站不顺眼。就找了一个黑客,然后把网站地址告诉了黑客,让它帮我黑了这个网站。让黑客在网站的首页显示"一小时小超人最帅的字",要特大号显示,那黑客就会通过我给的Url黑了这个网站的服务器。然后我一刷新网页。这个网页就显示了"一小时小超人最帅"。


这个代码也是一样。加了ref 之后 i变量传递是对象的引用也是网页的Url,方法内部修改是通过这个地址找了真的值然后进行修改,所有外面的i也发生了变化。




讲到这里大家应该明白了吧。


out关键字和ref 都是使变量通过引用传递。这一点他们是一样的。唯一的不通就是。ref的参数必须在调用方法前就初始化。而out参数必须在方法内部初始化。通过这一点的不同通他们的应用场景也就不同了。


场景一个 有个程序是 中国人民币的汇率进行换算。现在有10块钱。要通过一个方法进行换算。这个时候就应该用ref。因为这个10块钱初始值很重要对吧。我必须在方法外面就要定义我的人民币是多少钱。


场景二就是 int.TryPase(参数1, out 参数2)这个C#转换方法,通过参数1,将参数2转换为int类型。这个时候参数2的初始值是多少就没有意义了是吧,因为它最后计算的结果,是跟参数1的值有关系,跟它初始值的没有一毛钱的关系的。所以这个地方应该用out。


Ok。讲到这里就结束了哈。

如果刚开始学习的小伙伴还有疑问的话,可以评论咱们一起学习。

如果哪位大牛随便瞄到个错误,也请告之我,让我能够进步。

对了out的代码没有,是因为两个语法是一样的。

 


世上本来没有路,走的人多了,就是路了。世上也没有绝对的真理,你成功了,你就是真理。


复制链接 网友评论 收藏本文 关闭此页
上一条: 博客园是有开发博客查询相关的接口…  下一条: C#调用API让声卡发出声音
购买夜鹰教程网视频教程
  推荐教程/优惠活动

  热门服务/教程目录

  夜鹰教程网  新手必看,详细又全面。
  夜鹰教程网  购买教程  夜鹰教程网  在线支付-方便
  夜鹰教程网  担保交易-快捷安全   夜鹰教程网  闪电发货
  夜鹰教程网  电话和QQ随时可以联系我们。
  夜鹰教程网 不会的功能都可以找我们,按工作量收费。

客服电话:153 9760 0032

购买教程QQ:1416759661  购买教程
  热点推荐
表单提交中get和post方式的区别有…
解决ASP中UTF-8与GB2312编码转换乱…
asp数组中REDIM的用法(动态数组)…
生成html的新方法ASP
ASP字符串函数大全
ASP生成Word文件的代码
ASP中Randomize随机函数的使用
十天学会ASP教程之第一天:安装调…
自定义的asp日期格式化函数
防范ASP网站漏洞的八大法则之一
十天学会ASP教程之第二天:表单传…
asp中关于从utf8页面到gb2312页面…
ASP教程:实现长文章分页功能
IIS6架设网站的问题总结
五分钟打开 allow_url_fopen 的最…
  尊贵服务
夜鹰教程网 承接业务:软件开发 网站开发 网页设计 .Net+C#+VS2008+MSsql+Jquery+ExtJs全套高清完整版视频教程
  最近更新
博客园是有开发博客查询相关的接口…
C#里面的ref和out区别
C#调用API让声卡发出声音
.NET使用反射读取用户自定义的枚举…
.net操作SqlServer数据库增删改查…
如何将WCF服务部署到远程服务器
对WebApi 实现服务端信息的监控
用WCF生成Restful风格的接口返回 …
只有一个地址如何调用WCF服务
WCF简介
搭一个简单的wcf服务
WCF配置说明
WCF传输的数据量过大问题的解决方…
asp.net大文件分块上传文件秒传断…
http断点续传总结
  工具下载  需要远程协助? 购买教程

sql2008视频教程 c#视频教程

VIP服务:如果您的某个功能不会做,可以加我们QQ,给你做DEMO!

JQUERY  Asp.net教程

MVC视频教程  vs2012
.NET+sql开发
手机:15397600032 C#视频教程下载
vs2012 vs2008 vs2010 sql2008 sql2005
Asp.Net  

教程咨询QQ:1416759661


这篇文章不能解决你的问题?我们还有相关视频教程哦!

QQ:1416759661 新手QQ群:7835003  加Q远程协助!

在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术咨询: 购买教程  技术咨询:购买教程  大胆的加QQ咨询。

出售asp.net系列视频教程 高清原创版 每天晚上20:30--23:00在线 按照编号从简单到高级 http://www.yyjcw.com/list.html