C#中数组参数=out参数?

  • 结论
    先上结论,答案是yes,C#中数组确实具有out参数的特性。

  • 疑问
    最近开发一个上位机的功能,有段代码看得我一直很迷糊,我的认识,函数的执行结果,要么在函数中通过return返回,要么通过out或ref参数返回。这段代码中明显没有通过return获取返回值,输入参数倒是看起来很像out返回值,但是我反复确认了N遍,定义就是没有out或ref类型。这就很是疑惑了,只好先放一边,先把它当做out参数取返回值理解去完成开发,今天有空终于把这个疑问摸清楚了。

  • 验证
    各种百度,网上并没有答案。于是参照原来的代码写了一段Console程序,发现输入参数(字节数组)还真是在函数中更改后返回最新值了。此时原先的不明就里已经确定为就是【字节数组】的原因了,最初怀疑是Byte类型的原因,在程序中验证后发现并不是,然后用非字节类型的数组验证了下,仍然能在实参中取到函数更新后的值,确定为就是数组的原因。此时已经有点怀疑引用类型值类型的原因了,但是不对啊,平时引用类型string用的这么多,印象中并不会返回值啊,通过程序验证,也确定string参数没有out参数的特性,这就不得其解了。。直到搜到一篇文章,说string类型是一种特殊的引用类型,其实此处就等于是值传递,所有的谜团才清晰了。原因就在于参数分传值与传址两种,数组为引用类型,是按地址传递的,所以具备out参数的特性。
    点击查看代码

  • 参考
    值传递和地址传递和String类型传递_string类型传值是地址还是数值-CSDN博客
    https://www.cnblogs.com/mdnx/archive/2012/09/04/2671060.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值