C#中的ref和out关键字

35 篇文章 0 订阅

C#中的数据类型分为值类型和引用类型,他们最典型的差别就是在作为方法的参数方面

**值类型数据作为参数,修改形参时不会影响到实参
而引用类型数据作为参数,修改形参可以影响到实参**

某些情况下,传递的是值类型的数据,却要求把修改的结果带回来,
像引用类型作为参数那样的效果,ref关键词就可以达到这样的效果

ref关键字使实参按引用类型传递,其效果是,当控制权传递回调用方法时,在方法中对形参的任何更改都将反映在该实参中

下面来看一个例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            int val = 0;
            Method(ref val);
            //执行完上面的方法,变量val的值变为21
            Console.WriteLine("val的值为:"+val.ToString());

        }

        static void Method(ref int i)
        {
            i = 21;
        }
    }
}

ref

要注意的是,要使用ref关键字,方法的定义和调用都必须显式地使用ref关键字(out也是)

下面来演示一下out关键字的使用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            int val;
            Method(out val);
            //执行完上面的方法,变量val的值变为21
            Console.WriteLine("val的值为:"+val.ToString());

        }

        static void Method(out int i)
        {
            i = 21;
        }
    }
}

这里写图片描述
大家是不是觉得两种关键字的使用方法很相近,但是你仔细看就会发现
ref的示例中变量val在调用方法前就赋值了,而out却没有,这就是他们的区别:

**传递到ref的参数必须事先初始化,而out则不用(out的参数在传递之前不需要初始化)
ref关键字重在修改参数的数据,而out关键字重在带回执行结果**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值