从另一个 Class 调用方法时如何将 int 递增 1

How can I increment int by 1 when calling a method from another Class

我想在 C# 中实现以下想法,但我受困于此而无法继续。 我想从 Class Something 创建更多对象,并且总是在调用方法 I_Frame 时将序列号增加 1(我正在尝试使用按钮对其进行测试)。

  public class Something
    {
        private int sequenceNumber;

        public int SequenceNumber
        {
            get
            {
                return this.sequenceNumber;
            }
            set
            {
                this.sequenceNumber = value;
            }

        }

        public int I_FRAME(ref byte[] IFrame)
        {

            IFrame[0] = (byte)((sequenceNumber);
            IFrame[1] = 0x00

            sequenceNumber=sequenceNumber + 1 % 32768;
            return sequenceNumber;

        }

这是我的按钮代码。

public partial class VlastniTCP : Form
    {
       byte[] testbyte = new byte[2];

    private void button2_Click(object sender, EventArgs e)
        {
            
            Something Test = new Something();
            Test.I_Frame(ref testbyte);
            textbox1.Text = testbyte[0];

        }
   }

如果有任何建议或说明如何去做,我会很高兴。

提前致谢。

您的问题是每次单击按钮时都会创建一个新的 SomethingSomething.sequenceNumber 每当你创建一个新的时默认为零。您的选择是:

选项 1:每次都使用相同的实例:

    public partial class VlastniTCP : Form
    {
        byte[] testbyte = new byte[2];
        private Something test;

        private void button2_Click(object sender, EventArgs e)
        {

            test ??= new Something();
            test.I_FRAME(ref testbyte);
            textbox1.Text = testbyte[0];

        }
    }

选项 2:跟踪上次使用的序列号:

    public class Something
    {
        private static int lastSequenceNumber;

        public int SequenceNumber { get; set; }

        public int I_FRAME(ref byte[] IFrame)
        {
            var sequenceNumber = (lastSequenceNumber + 1) % 32768;
            lastSequenceNumber = sequenceNumber;
            SequenceNumber = sequenceNumber;

            IFrame[0] = (byte)sequenceNumber;
            IFrame[1] = 0x00;

            return sequenceNumber;

        }
    }