PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, July 21, 2022

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

 July 21, 2022     .net, c#, integer     No comments   

Issue

I would like to implement the following idea in C# but I am stuck with this and cannot move on. I want to create more objects from the Class Something and always when I call the method I_Frame I would like to increase the sequence number by 1 (I am trying to test it with a button).

  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;

        }

and this is my button code.

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];

        }
   }

I would be happy for every advice or explonation how to do it.

Thank you in advance.


Solution

Your problem is that you are creating a new Something every time you click the button. Something.sequenceNumber defaults to zero whenever you create a new one. Your options are:

Option 1: Use the same instance of something every time:

    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];

        }
    }

Option 2: Keep track of the last used sequenceNumber:

    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;

        }
    }


Answered By - Nigel
Answer Checked By - Robin (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing