>>901

int a = 0;
func2(a):
//この行になったとき、func2の中身がどうであっても、a==0
func1(ref a);
//この行になったとき、a!=0の可能性がある(func1の内容によって変わる)

↑がrefの参照。refのときだけ渡した数値を変えれる

↓がオブジェクト時のrefの参照。refでもrefでなくてもオブジェクト内の値はfunc内で変えれる。refなら渡したオブジェクト自体も変えれる

class A {public int value =0;}

A a = new A(); //オブジェクト生成
func2(a):
//この行になったとき、func2の中身がどうであっても、aはオブジェクト生成時のもの。a.valueは0以外の可能性がある
func1(ref a);
//この行になったとき、aはオブジェクト生成時のものではない可能性がある。a.valueは0以外の可能性がある