更新だから完全にツールの瞬間を引っ張った。Out/Ref に対する参照という意味です。「ref」と書かれているものはすべて、私が実際に参照することを意味していました
SomeMethod(オブジェクト someObject)
対
SomeMethod(out someObject)
ごめん。コードを変更したくないだけなので、答えはすでに意味があります。
私が理解している限り、ポインターを「コピー」し、そのポインターを使用するためにスタック上に新しいスペースを作成する ref とは異なりますが、ポインターは変更しません。
SomeMethod()
{
SomeThing outer = new SomeThing();
RefMethod(ref outer)
}
RefMethod(ref inner) //new space on stack created and uses same pointer as outer
{
inner.Hi = "There"; //updated the object being pointed to by outer
inner = new SomeThing();//Given a new pointer, no longer shares pointer with outer
//New object on the heap
}
Out はポインターをコピーし、ポインターが指す場所を操作できます。
SomeMethod()
{
SomeThing outer = new SomeThing();
RefMethod(out outer)
}
RefMethod(out inner) //same pointer shared
{
inner = new SomeThing();//pointer now points to new place on heap
//outer now points to new object
//Old object is orphaned if nothing else points to it
}
オブジェクトに関してはそれで問題ありませんが、スタック上にあるだけであることを示すものがないため、値型についてはどうでしょうか?