《CLR via C#》上说:
CLR不区分out和ref,无论使用哪个关键字都会产生相同的IL代码,另外元数据也完全一致,只有一个bit除外,这个bit是用来记录该参数属于out还是ref的。
ref类型的参数:
如果方法的参数用ref标记,调用者必须在调用该方法前初始化这个参数的值,被调用的方法可以读取值以及/或者向值写入。
out类型的参数:
如果方法的参数用out标记,表明不指望调用者在调用方法之前就初始化好了对象。被调用的方法不能读取参数的值,而且在放回前必须向这个值写入。