【发布时间】:2020-05-05 05:37:01
【问题描述】:
我正在尝试创建一个计数器,该计数器将根据用户的响应而增加。这是我到目前为止得到的代码:
string ok = "";
int z = 0;
test(ok, z);
test1(ok, z);
Console.WriteLine(z);
}
static void test(string ok, int z)
{
bool estok = false;
while (!estok)
{
ConsoleKeyInfo saisie = Console.ReadKey(true);
if (saisie.Key == ConsoleKey.A || saisie.Key == ConsoleKey.B)
{
estok = true;
if (saisie.Key == ConsoleKey.A)
{
z++;
}
if (saisie.Key == ConsoleKey.B)
{
z--;
}
}
else
{
estok = false;
Console.WriteLine("Error");
}
}
}
static void test1(string ok, int z)
{
bool estok = false;
while (!estok)
{
ConsoleKeyInfo saisie = Console.ReadKey(true);
if (saisie.Key == ConsoleKey.A || saisie.Key == ConsoleKey.B)
{
estok = true;
if (saisie.Key == ConsoleKey.A)
{
z++;
}
if (saisie.Key == ConsoleKey.B)
{
z--;
}
}
else
{
estok = false;
Console.WriteLine("Error");
}
}
}
我有 2 个函数(test 和 test1)都增加了 int z。 Console.WriteLine(z) 将返回 0,而不是我正在等待的 2(当用户有 2 个正确答案时)。
我认为增量不会发生,因为它在函数中并且Console.WriteLine(z) 无法到达z++。我该如何改变呢?
我怎样才能得到这些结果?
【问题讨论】:
-
C# 方法参数默认具有值语义。您在方法中所做的更改不适用于您从 Main() 传递的对象。这里更好的方法是从方法中返回值 z。
标签: c# counter pass-by-reference