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



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

您收到此警告/错误是因为warning从未实际用于某些内容。一旦你把它传递给另一个函数,在if语句中使用它,等等,警告/错误就会消失。

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

是否需要将restartwinner返回到执行Restart()的方法?

您可以使用refout关键字来执行此操作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();
}

然而,具有大量的CCD_ 8参数是可能的。因此,您可以创建一个类,并使用它将数据传递到方法中。

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类成员并保持方法签名的完整性。

最新更新