我正在打印序列号,它跳过2,即使我只增加1。 我有一个带有静态变量的对象TradeSequenceNo。 我假设a1和b2的值为1,2,但我发现它的值为2,4。我怎样才能确保每次调用TradeSequenceNo.NextSequanceNo
时我只能获得1的增量using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class TradeSequenceNo
{
private static int sequenceno;
public string id
{
get
{
return "NextTradeID";
}
}
public static int NextSequanceNo
{
get
{
sequenceno++;
return sequenceno;
}
}
}
public class Program
{
static void Main(string[] args)
{
int a1 = TradeSequenceNo.NextSequanceNo;
int b2 = TradeSequenceNo.NextSequanceNo;
}
}
}
答案 0 :(得分:1)
您发布的行为是因为调试程序。每次在调试器中检查属性值时,都会调用它,从而导致值的增量。因此,如果您在调试器中多次访问相同的值,您将获得更高的数字,具体取决于您检查变量值的次数。只需执行以下代码(无需调试),您将意识到代码是正确的并且行为正确:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class TradeSequenceNo
{
private static int sequenceno;
public string id
{
get
{
return "NextTradeID";
}
}
public static int NextSequanceNo
{
get
{
sequenceno++;
return sequenceno;
}
}
}
public class Program
{
static void Main(string[] args)
{
int a1 = TradeSequenceNo.NextSequanceNo;
int b2 = TradeSequenceNo.NextSequanceNo;
System.Console.WriteLine(a1);
System.Console.WriteLine(b2);
System.Console.ReadKey();
}
}
}