違いは何ですか
public function Foo(ref Bar bar)
{
bar.Prop = 1;
}
public function Foo(Bar bar)
{
bar.Prop = 1;
}
本質的に「ref」のポイントは何ですか。オブジェクトは常に参照によるものではありませんか?
重要なのは、実際にobjectを渡すことは決してないということです。参照を渡します。引数自体は、参照または値で渡すことができます。パラメータ値自体を変更すると、たとえば別の参照に設定しnull
たり、別の参照に設定したりすると、動作が異なります。このref
変更により、呼び出し元の変数に影響します。渡された値のコピーref
にすぎないため、呼び出し元は変数への変更を認識しません。
詳細については、引数の受け渡しに関する私の記事を参照してください。
はい。しかし、これを行う場合:
public function Foo(ref Bar bar)
{
bar = new Bar();
}
public function Foo(Bar bar)
{
bar = new Bar();
}
そうすれば違いがわかります。最初は参照を参照に渡すため、この場合、バーは新しいオブジェクトに変更されます。第二に、そうではありません。