Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Initialize Array with Custom Type

Tags:

arrays

c#

How do I initialize this array of custom types:

PostType[] q = new PostType[qArray.Length];

//initialize array
for( int x = 0; x < qArray.Length; x++)
    q[x] = new PostType();

Is there a better way to initialize this array?

like image 512
Luke101 Avatar asked Jan 09 '10 23:01

Luke101


1 Answers

The way you are doing it is fine:

PostType[] q = new PostType[qArray.Length];
for (int i = 0; i < q.Length; i++)
    q[i] = new PostType();

One thing I have changed are to rename the index veriable from x to i, as I find this easier to read, although it's a subjective thing.

Another thing I have changed is the for loop end condition should depend on the length of q, not on the length of qArray. The reason for this is that with your method if you decide to change the first line to use a different length instead of qArray.Length, you'd have to remember to change the second line too. With the modified code you only need to update the first line of code and the rest will work without modification.

You could also do this using Linq:

PostType[] q = Enumerable.Range(0, qArray.Length)
                         .Select(_ => new PostType())
                         .ToArray();

But for large arrays this will be slower and not really easier to read in my opinion (especially if you haven't seen it before). I think I'd probably just stick with the first method if I were you.

like image 165
Mark Byers Avatar answered Sep 22 '22 23:09

Mark Byers