У меня есть контейнер этого класса:
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, за исключением последнего примера, я просто передаю переменные-члены индивидуально, а не весь контейнер.