C++/CLIの用語を借りるとだな
C#の型には「値型」と「ハンドル型」の2種類がある
値型は変数の中にそのまま実体が入っているのに対し、
ハンドル型は変数の中にハンドルが入っている
ハンドルっていうのはGCによってオブジェクトに割り振られるIDだ
どちらにせよ値渡しならその変数の値が渡るので、
値型なら値そのもの、ハンドル型ならハンドルが渡るわけ
参照渡しでハンドル型変数を渡せば呼び出された先でハンドルの値を書き換えることができる
C#ではこの「ハンドル」を「参照」と呼ぶので紛らわしいが参照渡しと参照は別物