Объекту не присваивается значение (null)

В мейне я создаю пустой объект Fighter firstFighter = null; и отправляю этот объект в метод ChooseFighter(Fighter[] fighters, Fighter fighter), и в этом методе объекту firstFighter присваиваю значение из массива Fighter[] fighters;, но при выходе из метода объект как был null так и остался, в чем моя ошибка?

class Program
{
    private static void Main(string[] args)
    {
        Fighter[] fighters =
        {
            new Rogue(600, 10, 50),
            new Knight(1200, 20, 25),
        };

        Fighter firstFighter = null;
        Fighter secondFighter = null;
        Console.WriteLine("Выберите первого бойца");
        ChooseFighter(fighters, firstFighter);
        Console.WriteLine("Выберите второго бойца");
        ChooseFighter(fighters, secondFighter);
    }


    private static void ChooseFighter(Fighter[] fighters, Fighter fighter)
    {
        string userInput;
        int index;
        bool isCorrectParse;
        while (fighter == null)
        {
            userInput = Console.ReadLine();
            isCorrectParse = int.TryParse(userInput, out index);

            if (isCorrectParse && index > 0 && index - 1 < fighters.Length)
            {
                index -= 1;
                fighter = fighters[index];
            }
            else
            {
                Console.WriteLine("Вы ввели неправильный индекс, попробуйте снова!");
            }
        }
    }
}

class Fighter
{
    public int Health { get; protected set; }
    public int Damage { get; protected set; }
    public int Armor { get; protected set; }

    public Fighter(int health, int damage, int armor)
    {
        Health = health;
        Damage = damage;
        Armor = armor;
    }
}

class Rogue : Fighter
{
    public Rogue(int health, int armor, int damage) : base(health, damage, armor) { }
}

class Knight : Fighter
{
    public Knight(int health, int armor, int damage) : base(health, damage, armor) { }   
}

}


Ответы (1 шт):

Автор решения: Andrei Pavlyuk

Так получается поскольку вы передаете null, а не предоставляете ссылку, которую ожидает получить функция. Чтобы решить этот вопрос создаете экземпляр и передайте по ссылке в качестве аргумента метода, либо используйте ключевое слово ref. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/ref#passing-an-argument-by-reference

→ Ссылка