Начальное значение никогда не используется, а параметры метода не обновляются при запуске кода - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу, чтобы эти параметры метода, перезапуск и победитель обновили поле в main. однако, это не похоже на работу, потому что оно говорит, что значение никогда не используется. Но я им пользуюсь, поэтому не понимаю;

'''
static void Restart(bool restart, bool winner, string[,] nums, bool[,] trueIfX, bool[,] trueIfO)
    {
        Console.WriteLine("would you liked to start a new game? Y/N");
        string input = Console.ReadLine();
        bool correctInput = false;

        do
        {

            if (input == "Y")
            {
                correctInput = true;
                restart = false;
                winner = false;
                nums[0, 0] = "1"; nums[0, 1] = "2"; nums[0, 2] = "3";
                nums[1, 0] = "4"; nums[1, 1] = "5"; nums[1, 2] = "6";
                nums[2, 0] = "7"; nums[2, 1] = "8"; nums[2, 2] = "9";
'''

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Вы получаете это предупреждение / ошибку, потому что warning фактически никогда не используется для чего-то. Как только вы передадите его другой функции, используйте ее в операторе if, et c, предупреждение / ошибка исчезнет go.

Думайте об этом, как о строителе в качестве вашего сотрудника, и вы даете работник молоток. Да, вы дали своему работнику то, что ему нужно, но теперь они стоят и ждут, когда вы что-то их используете.

0 голосов
/ 10 апреля 2020

вам нужно вернуть restart и winner обратно к методу, который выполнил Restart()?

Вы можете использовать ключевые слова ref или out, чтобы сделать это ref означает передачу параметра по ссылке. Это позволяет вызываемой функции обновлять значение параметра для вызывающего абонента, например

static void Restart(ref bool restart, ref bool winner)
{
restart = true;
}

static void Main()
{
var restartparam = false;
var winner = false;
Restart(ref restartparam, ref winner);
if (restartparam)
  RestartNow();
}

. Однако наличие множества параметров ref может быть изменено. Таким образом, вы можете создать класс и использовать его для передачи данных в метод.

подобно

class RestartOptions
{
public bool restart;
public bool winner;
}

static void Restart(RestartOptions opt)
{
opt.winner = true;
}

static void Main()
{
var options = new RestartOptions();
Restart(options);
if (options.winner)
  DispenseJackpot();
}

, что позволяет вам изменять RestartOptions членов класса и сохранять сигнатуры методов без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...