c# 4.0 – C# for loop increment by 2 trouble

c# 4.0 – C# for loop increment by 2 trouble

So you want to increment every index with 2:

string[] A = new string[] { A, B, C, D };
string[] B = new string[A.Length + 2];
for (int i = 0; i < A.Length; i++)
{
    B[i + 2] = A[i];
}

Demo

Index: 0 Value: 
Index: 1 Value: 
Index: 2 Value: A
Index: 3 Value: B
Index: 4 Value: C
Index: 5 Value: D

Edit: So you want to start with index 0 in B and always leave a gap?

string[] A = new string[] { A, B, C, D };
string[] B = new string[A.Length * 2 + 2]; // you wanted to add something other as well
for (int i = 0; i/2 < A.Length; i+=2)
{
    B[i] = A[i / 2];
}

Demo

Index: 0 Value: A
Index: 1 Value: 
Index: 2 Value: B
Index: 3 Value: 
Index: 4 Value: C
Index: 5 Value: 
Index: 6 Value: D
Index: 7 Value: 
Index: 8 Value: 
Index: 9 Value:

Update Is there any alternative coding aside from this?

You can use Linq, although it would be less readable and efficient than a simple loop:

String[] Bs = Enumerable.Range(0, A.Length * 2 + 2) // since you want two empty places at the end
 .Select((s, i) => i % 2 == 0 && i / 2 < A.Length ? A[i / 2] : null)
 .ToArray();

Final Update according to your last comment(start with index 1 in B):

for (int i = 1; (i-1) / 2 < A.Length; i += 2)
{
    B[i] = A[(i-1) / 2];
}

Demo

Index: 0 Value: 
Index: 1 Value: A
Index: 2 Value: 
Index: 3 Value: B
Index: 4 Value: 
Index: 5 Value: C
Index: 6 Value: 
Index: 7 Value: D
Index: 8 Value: 
Index: 9 Value

Another attempt to guess what you want:

string[] A = new string[] { A, B, C, D };
string[] B = new string[A.Length * 2];
for (int i = 0; i < A.Length; i++)
{
    B[i*2] = A[i];
}

c# 4.0 – C# for loop increment by 2 trouble

Leave a Reply

Your email address will not be published.