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

Дан класс:

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