C#中的ref和out类型参数

本文探讨了《CLRviaC#》书中关于CLR如何处理ref和out参数的内容。无论使用哪种关键字,CLR生成的IL代码都相同,仅在元数据中有一个bit用来区分二者。文章进一步解释了ref参数要求调用者初始化参数值,而out参数则由被调用方法负责初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《CLR via C#》上说:

CLR不区分out和ref,无论使用哪个关键字都会产生相同的IL代码,另外元数据也完全一致,只有一个bit除外,这个bit是用来记录该参数属于out还是ref的。

ref类型的参数:
如果方法的参数用ref标记,调用者必须在调用该方法前初始化这个参数的值,被调用的方法可以读取值以及/或者向值写入。

out类型的参数:
如果方法的参数用out标记,表明不指望调用者在调用方法之前就初始化好了对象。被调用的方法不能读取参数的值,而且在放回前必须向这个值写入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值