我想要这些方法参数,重新启动和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语句中使用它,等等,警告/错误就会消失。
把它想象成有一个建筑工人作为你的员工,然后你给员工一把锤子。是的,你给了你的员工所需要的东西,但现在他们站在那里等着你用他们做什么。
是否需要将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();
}
然而,具有大量的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
类成员并保持方法签名的完整性。