, как вы делаете это нормально:
PostType[] q = new PostType[qArray.Length];
for (int i = 0; i < q.Length; i++)
q[i] = new PostType();
Одна вещь, которую я Изменились переименовать индекс veriable от х к I, так как я считаю, это легче читать, хотя это субъективная вещь.
Другое, что я изменил, это условие конца цикла для цикла должно зависеть от длины q, а не от длины qArray. Причина этого заключается в том, что с помощью вашего метода, если вы решите изменить первую строку, чтобы использовать другую длину вместо qArray.Length, вам придется не забывать также менять вторую строку. С измененным кодом вам нужно только обновить первую строку кода, а остальная часть будет работать без изменений.
Вы также мог бы сделать это с помощью Linq:
PostType[] q = Enumerable.Range(0, qArray.Length)
.Select(_ => new PostType())
.ToArray();
Но для больших массивов это будет медленнее, и на самом деле не легче читать на моем взгляде (особенно, если вы еще не видели его раньше). Думаю, я бы, наверное, придерживался первого метода, если бы я был вами.
перечислимых Repeat не будет работать, как он повторяет ссылку на первый объект, а не создавать новые – Aly
Enumerable.Range работы (он создает новый объект для каждого вызова). Но я бы посоветовал ни Repeat, ни Range - как для удобочитаемости, так и для производительности. Я обновил свой комментарий с помощью явного примера и объяснил, почему я думаю, что вы не должны его использовать. –