Search code examples
c#variablesfor-loopnames

For Loop: i in variable names


SubnetConvert SubnetOctet1 = new SubnetConvert();
SubnetConvert SubnetOctet2 = new SubnetConvert();
SubnetConvert SubnetOctet3 = new SubnetConvert();
SubnetConvert SubnetOctet4 = new SubnetConvert();

    int Octet1 = int.Parse(txtOctet1.Text);
    SubnetOctet1.OctetConvert = Octet1;
    lblOctet1.Text = SubnetOctet1.SendBinary;

    int Octet2 = int.Parse(txtOctet2.Text);
    SubnetOctet2.OctetConvert = Octet2;
    lblOctet2.Text = SubnetOctet1.SendBinary;

    int Octet3 = int.Parse(txtOctet3.Text);
    SubnetOctet3.OctetConvert = Octet3;
    lblOctet3.Text = SubnetOctet1.SendBinary;

    int Octet4 = int.Parse(txtOctet4.Text);
    SubnetOctet4.OctetConvert = Octet4;
    lblOctet4.Text = SubnetOctet1.SendBinary;

is it possible to put all this code in a For loop like

For (int i = 1; i <=4; i++)
{
SubnetConvert SubnetOctet[i] = new SubnetConvert();

    int Octet[i] = int.Parse(txtOctet[i].Text);
    SubnetOctet[i].OctetConvert = Octet[i];
    lblOctet[i].Text = SubnetOctet[i].SendBinary;
}

I have tried the coding above and it doesn't work, I have just put it there for an example of what I want to achieve


Solution

  • The code sample is not something possible - there is no support for control arrays as you have shown.

    A better way would be to write a function that encapsulates the repeating code and pass in the differing parameters.

    private void SetBinaryValue(string value, Label display)
    {
        int Octet = int.Parse(value);
        SubnetOctet.OctetConvert = Octet;
        display.Text = SubnetOctet.SendBinary;
    }
    

    You would call this function like so:

    SetBinaryValue(txtOctet1.Text, lblOctet1);
    SetBinaryValue(txtOctet2.Text, lblOctet2);
    

    Note that you only need one SubnetConvert with this approach (which you can either initialize within the function, or as a field).