Есть ли способ поместить два массива в один массив, чтобы я мог использовать новый индекс массива? в С#

int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = { 6, 7, 8, 9, 0 };

int[[]] arr3 = {arr1,arr2};
c#
0
stevencrist 19 Янв 2022 в 11:12
Что ты будешь делать с arr3? могут быть лучшие способы.
 – 
Lei Yang
19 Янв 2022 в 11:14
метод объединения пожалуй, самый простой способ. Но он не создаст новый массив, а только перечислимый.
 – 
Steve B
19 Янв 2022 в 11:19
Вероятно, это ошибка - работать с массивами в первую очередь. Обычно существуют гораздо более подходящие типы коллекций.
 – 
Damien_The_Unbeliever
19 Янв 2022 в 11:19
4
Вы хотите объединить массивы в один, более длинный, например int[] arr3 = arr1.Concat(arr2).ToArray()? Или иметь массив или массивы в качестве результата, например int[][] arr3 = {arr1,arr2};?
 – 
Klaus Gütter
19 Янв 2022 в 11:21
Или, может быть, многомерный массив int[,] arr3 = new int[,] { arr1, arr2 };?
 – 
Giovanni Esposito
19 Янв 2022 в 11:23

3 ответа

Лучший ответ

Вы можете применить SelectMany() к arr3, чтобы преобразовать массив [[]] массива в один плоский массив.

var flattenArr = arr3.SelectMany(x => x).ToArray();

Или вы можете использовать List<T>.AddRange() для объединения двух списков в результирующий.

Поскольку у вас есть входной массив, вам нужно сначала преобразовать arr1 и arr2 в списки.

int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = { 6, 7, 8, 9, 0 };

var list1 = arr1.ToList();
var list2 = arr2.ToList();

var result = list1.AddRange(list2).ToArray();  //Here type of result is int[]

Как предложил @Klaus Gütter в своем комментарии, вы можете использовать метод .Concat() для объединения двух разные массивы

int[] arr3 = arr1.Concat(arr2).ToArray()
0
Prasad Telkikar 19 Янв 2022 в 11:25

Как уже упоминалось, вы, вероятно, не хотите работать с массивом, так как есть так много лучших коллекций. Если, однако, вы настаиваете, простой способ сделать это — использовать Array.Copy:

// Declare array of the needed length
var arr4 = new int[arr1.Length+arr2.Length];
// Copy the first array into the new array
Array.Copy(arr1, arr4, arr1.Length);
// Copy the second array into the new array, at the end of the first
Array.Copy(arr2, 0, arr4, arr1.Length, arr2.Length);
0
Palle Due 19 Янв 2022 в 12:31

Может быть, это то, что вам нужно

List<int[]> arr3 = new List<int[]>(){arr1,arr2};

Просто используйте список

-1
Ramil Aliyev 19 Янв 2022 в 11:57
1
Это создает массив из двух массивов, а не один массив.
 – 
Palle Due
19 Янв 2022 в 12:22