C#中ref和out的区别与使用

C#中ref关键字和out关键字所实现的功能差不多,都是指定一个形参按照引用传递而不是实参的副本传递。

两者都是按地址传递的,使用后都将改变原来参数的数值。

但是二者适用场景还是有些区别的:out适合用在需要retrun多个返回值的地方,而ref则适合用在被调用的方法修改调用者参数引用的时候。

1.调用前初始化

ref作为函数参数在调用前,实参必须赋初始值,否则编译器将提示:使用了未赋值的局部变量

out作为参数的函数在调用前,实参可以不赋初始值,

2.在函数内部

在被调用函数内,ref引入的参数在返回前不必为其赋初值

在被调用函数内,out引入的参数在返回前至少赋值一次,否则编译器将提示:控制离开当前方法之前必须对out参数赋值

3.关于重载

有out|ref关键字的方法可以与无out和ref关键字的方法构成重载;但如想在out和ref间重载,编译不能通过

4.用处

ref一般用在传递前必须初始化的地方:

例如:

     string strresFront = "";

     if (this.mApp.PLC.PLC2.ReadFromPlc(6000, 200, ref strresFront))

out一般用在格式转换,比如将string转成int类型

例如:

   int.TryParse(ERRHeatTime, out ErrHeatTime);

==总结==

①ref指定的参数在函数调用时候必须初始化,不能为空引用;而out指定的参数在函数调用时候可以不初始化

②out指定的参数被调用时会清空自己,不能作为参数来传递参数值,且必须在函数内赋初值;而ref指定的参数则无此限制

③简单来说:ref是有进有出,out是只出不进

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值