为什么以下代码会返回1,1,1
而不是1,2,3
?我想保留int temp
值,以便我可以在其他地方使用它。如果我直接拨打Console.WriteLine(count())
,它就有效。
class Program
{
private static int start = 0;
static void Main(string[] args)
{
int temp = count();
Console.WriteLine(temp);
temp = count();
Console.WriteLine(temp);
temp = count();
Console.WriteLine(temp);
}
static int count()
{
return start + 1;
}
}
答案 0 :(得分:8)
如果您希望计数返回每次调用时递增的值,则应将修改后的值存储回变量中:
static int count()
{
start = start + 1;
return start;
}
答案 1 :(得分:1)
Ndech的代码将从你的(修改过的)问题中执行所需的输出,你每次看到1,1,1的原因是:
static int count()
{
return start + 1;
}
当start = 0时,如果每次调用count()时返回start + 1,那么每次它都是0 + 1。 Ndech提供的代码示例将执行:
start = 0; // before first console.write
count();
start = 1; // first console.write
count();
start = 2;
etc...
另一种可写的方式是:
static int count()
{
return ++start; // take the current value of start, and add one to it.
}