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にすれば暗黙的な型変換にも対応。