C#如何一个方法实现多个返回值(out和ref的区别)

同一个方法内多个返回值out和ref都可以实现。都需要在调用之前定义参数,必须显式使用ref或者out关键字。区别在于ref必须在传递参数前就进行初始化。

1.都需要显式使用

out显示

   这里可以看到sex没有使用out关键字会提示语法错误。同样ref也需要显式使用关键字

2.调用传递参数之前(ref必须传递之前初始化)

(1)ref传递之前必须赋初始值

调用之前

       这里可以看到只是定义了name,sex,age而不初始化赋值,ref会报错“使用了未赋值的局部变量xxx”。给参数初始化赋值之后如下图

      给3个参数赋初始值后,不再报错,运行也不会报错。

(2)Out关键字传递参数之前不强制要求先赋初始值

这里可以看到out关键字在传递前是不强制要求参数赋初始值的。而ref传递前不赋初始值会报错。不过当先调用TestOut()再调用TestRef()不会报错,因为out已经给参数赋值,再用ref就不会报错。如下图:

可以看到没有报错而且可以成功运行。

3.调用方法之后,方法传递参数时

(1)使用ref可以在调用的方法里不写任何参数,也可以赋值或者不赋值,都不会报错。如图:

(2)使用out,必须在调用的方法里赋值,否则报错。

给每个out关键字的参数变量在返回前赋值,则正确:

4.总结

<1>都必须显式使用ref、out关键字

<2>ref传进去的参数必须在调用前初始化,out不必

<3>ref传进去的参数在函数内部可以直接使用,而out不可

<4>ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值

转载于:https://my.oschina.net/CrazyBoy1024/blog/713159

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值