《CLR via C#》上说:
CLR不区分out和ref,无论使用哪个关键字都会产生相同的IL代码,另外元数据也完全一致,只有一个bit除外,这个bit是用来记录该参数属于out还是ref的。
ref类型的参数:
如果方法的参数用ref标记,调用者必须在调用该方法前初始化这个参数的值,被调用的方法可以读取值以及/或者向值写入。
out类型的参数:
如果方法的参数用out标记,表明不指望调用者在调用方法之前就初始化好了对象。被调用的方法不能读取参数的值,而且在放回前必须向这个值写入。
本文探讨了《CLRviaC#》书中关于CLR如何处理ref和out参数的内容。无论使用哪种关键字,CLR生成的IL代码都相同,仅在元数据中有一个bit用来区分二者。文章进一步解释了ref参数要求调用者初始化参数值,而out参数则由被调用方法负责初始化。
《CLR via C#》上说:
CLR不区分out和ref,无论使用哪个关键字都会产生相同的IL代码,另外元数据也完全一致,只有一个bit除外,这个bit是用来记录该参数属于out还是ref的。
ref类型的参数:
如果方法的参数用ref标记,调用者必须在调用该方法前初始化这个参数的值,被调用的方法可以读取值以及/或者向值写入。
out类型的参数:
如果方法的参数用out标记,表明不指望调用者在调用方法之前就初始化好了对象。被调用的方法不能读取参数的值,而且在放回前必须向这个值写入。
1241
1975

被折叠的 条评论
为什么被折叠?