序列号跳过2

时间:2017-06-29 00:11:57

标签: c#

我正在打印序列号,它跳过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;
        }
    }
}

1 个答案:

答案 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();
        }
    }
}