C# 从未使用过初始值,并且在代码运行时未更新方法参数

C# 从未使用过初始值,并且在代码运行时未更新方法参数,c#,C#,我想要这些方法参数,重启并更新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");

我想要这些方法参数,重启并更新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";
'''

您之所以收到此警告/错误,是因为
警告
从未实际用于某些用途。一旦您将它传递给另一个函数,在if语句中使用它,警告/错误就会消失


把它想象成有一个建筑工人作为你的雇员,你给了这个雇员一把锤子。是的,你给了你的员工它需要的东西,但是现在他们站在那里等着你用他们做点什么。

你需要将
重新启动
赢家
返回到执行
重新启动()的方法吗

您可以使用
ref
out
关键字执行此操作
ref
表示通过引用传递参数。这允许被调用函数更新调用者的参数值 像

static void Restart(参考bool Restart,参考bool winner)
{
重启=真;
}
静态void Main()
{
var restartparam=false;
var=false;
重新启动(ref restartparam,ref winner);
如果(重新启动参数)
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();
}