Создать экземпляр массива объектов самым простым способом?
Дан класс:
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 объектов?
- @Maniekb: В ответе Рида используются * три цикла *. Есть цикл в Range, есть цикл в Select и есть цикл в ToArray. А это на две * больше * петли, ...
Ответ #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);
Ответ #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();
-
4
-
10
-
6
-
5
-
15
-
4
-
8
-
2
-
4
-
3
-
3
-
6
-
3
-
7
-
3
-
3
-
12
-
5
-
3
-
4
-
6
-
8
-
2
-
2
-
1
-
3
-
5
-
5
-
4
-
4
-
17
-
5
-
6
-
3
-
5
-
16
-
3
-
1
-
5
-
1
-
3
-
5
-
3
-
1
-
2
-
5
-
10
-
12
-
4
-
7