Создать экземпляр массива объектов самым простым способом?

Дан класс:

class clsPerson { public int x, y; } 

Есть ли способ создать массив 9X_ctor этих классов с каждым элементом, инициализированным 9X_bytearray созданным (по умолчанию) экземпляром, без 9X_ctor выполнения этого вручную в цикле for, например:

clsPerson[] objArr = new clsPerson[1000]; for (int i = 0; i < 1000; ++i) objArr[i] = new clsPerson(); 

Можно 9X_array ли сократить объявление и создание массива 9X_jsonarray из N объектов?

4
4

  • @Maniekb: В ответе Рида используются * три цикла *. Есть цикл в Range, есть цикл в Select и есть цикл в ToArray. А это на две * больше * петли, ...
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Создать экземпляр массива объектов самым простым способом?

В этом сценарии конструктор должен запускаться 9X_new-operator для каждого элемента в массиве. Независимо 9X_c# от того, используете ли вы цикл, инициализаторы 9X_visual-c# коллекции или вспомогательный метод, каждый 9X_csharp элемент в массиве должен быть посещен.

Если 9X_jsonarray вы просто ищете удобный синтаксис, вы можете 9X_constructor использовать следующий

public static T[] CreateArray(int count) where T : new() { var array = new T[count]; for (var i = 0; i < count; i++) { array[i] = new T(); } return array; } clsPerson[] objArary = CreateArray(1000); 

15
0

Ответ #2

Ответ на вопрос: Создать экземпляр массива объектов самым простым способом?

Вы должны вызывать конструктор для каждого 9X_c# элемента. Невозможно выделить массив и вызывать 9X_c-sharp конструкторы классов для элементов без создания 9X_bytearray каждого элемента.

Вы можете сократить его 9X_bytearray (немного) из цикла, используя:

clsPerson[] objArr = Enumerable.Range(0, 1000).Select(i => new clsPerson()).ToArray(); 

Лично я бы 9X_c# все равно выделил массив и перебрал его 9X_c-sharp (и / или переместил во вспомогательную процедуру), хотя 9X_operator-new это очень ясно и все еще довольно просто:

clsPerson[] objArr = new clsPerson[1000]; for (int i=0;i<1000;++i) clsPerson[i] = new clsPerson(); 

11
0