私はこのコンテナクラスを持っています:
class Fruit
{
public Apple apple;
public Banana banana;
}
そして、私は次のような別のクラスの関数を持っています:
public void ChangeFruit(Fruit fruit)
{
fruit.apple = memberApple;
fruit.banana = memberBanana;
}
そして、それはうまくいきます。
ただし、これが機能しない理由を知りたいです。
コンテナを取得する代わりにChangeFruitメソッドを変更すると、次のように実際のフルーツクラスを取得します。
public void ChangeFruit(Apple apple, Banana banana)
{
apple = memberApple;
banana = memberBanana;
}
次に、各引数でrefキーワードが渡されない限り、これは機能しません。なぜここにrefキーワードが必要で、そこには必要ないのですか?
ちなみに、後者のChangeFruitを呼び出すときは、次のように呼びます。
ChangeFruit(myFruit.apple, myFruit.banana);
とは対照的にChangeFruit(myFruit);
コンテナクラスを渡すときにrefキーワードは必要ありませんが、各フルーツを個別に渡す場合は必要です。どちらの方法でも、myFruitを渡します。ただし、後者の例では、コンテナー全体ではなく、メンバー変数を個別に渡します。