前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通俗易懂的ref和out区别

通俗易懂的ref和out区别

作者头像
喵叔
发布2020-09-08 16:17:46
5030
发布2020-09-08 16:17:46
举报
文章被收录于专栏:喵叔's 专栏喵叔's 专栏

refout 是C#开发中经常用到的两个关键字,但是很多人没有搞清楚这两个关键字的具体区别,下面我们来说一下这两个关键的区别。

零、 ref 与 out 的异同
  1. 相同:
  • 都是按地址传递;
  • 使用后都将改变原来参数的值;
  • 编译时处理方式相同;
  • 属性不能作为参数传递。
  1. 不同:
  • ref 将参数值传进方法, out 无法将参数值传入方法;
  • ref 传入参数前必须先初始化, out 不必在参数传输方法前初始化,但必须在方法中初始化;
  • ref 用在需要被调用的方法修改调用者的引用的时候, out 用在需要返回多个结果的地方。
一、代码演示

ref 将参数值传进方法

代码语言:javascript
复制
static void Main(string[] args)
{
    //初始化
    int number = 50;
    Console.WriteLine("调用方法前 number 值:" + number);
    RefFunction(ref number);
    Console.WriteLine("调用方法后 number 值:" + number);
    Console.Read();
}

// 传入的参数值是 50 ,方法中使用的num值也是50
static void RefFunction(ref int num)
{
    num = num / 2;
}

输出结果如下图所示:

Zh3gpQ.png
Zh3gpQ.png

out 无法将参数值传入方法

代码语言:javascript
复制
static void Main(string[] args)
{
    int number = 50;
    Console.WriteLine("调用方法前 number 值:" + number);
    OutFunction(out number);
    Console.WriteLine("调用方法后 number 值:" + number);
    Console.Read();
}

// 无法将的参数值50传入 ,但是必须在方法中初始化
static void OutFunction(out int num)
{
    //初始化
    num = 120;
    num = num / 2;
}

输出结果如下图所示:

Zh8EnI.png
Zh8EnI.png

小拓展:如果一个方法采用ref或out参数,而另一个方法不采用这两类参数,则可以进行重载。如下代码示例就是重载,可以通过编译: static void Function(out int num) { num = 120; num = num / 2; } static void Function(int num) { num = num / 2; }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 零、 ref 与 out 的异同
  • 一、代码演示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档