out, ref, in。オペランド
outは二つ以上の値を返したい時。例えばメソッド自体は何らかの判定の真偽値を返して、outパラメーターでさらに詳しい結果を返すみたいな。Unityで言えばRaycastがまさにこれを使ってる。
refは渡された変数に変更を加えたいときに使う。outはメソッドから呼び出し元に情報が流れるが、refでは双方向に情報が流れている。
inパラメーターは普通の引数とほとんど同じだが、値ではなく参照を渡す。大きいサイズの方などを渡すときにはinを使えばコストを節約できるみたい。
情報の流れをまとめると、outはメソッド→呼び出し側、refはメソッド<->呼び出し、inは呼び出し→メソッド。
public static Type operator Operand(arguments)
{
}
で、各オペランドに対するクラスの挙動を設定できる。
public static explicit operator Operand(arguments){}
で、明示的な型キャストに対する挙動も設定できる。
explicitをinplicitにすれば暗黙的な型変換にも対応。