C# 从未使用过初始值,并且在代码运行时未更新方法参数
我想要这些方法参数,重启并更新main中的一个字段。然而,它似乎不起作用,因为它说这个值从未被使用过。但我正在使用它,所以我不明白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");
'''
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();
}