Если нет, то что это лучший способ ее создать?есть функция, эквивалентная php array_merge в C#
Примечание: слияние не просто добавление, это слияние ключей, которые являются одинаковыми.
Если нет, то что это лучший способ ее создать?есть функция, эквивалентная php array_merge в C#
Примечание: слияние не просто добавление, это слияние ключей, которые являются одинаковыми.
Эта функциональность существует в элементе списка. Массивы являются фиксированными элементами ширины в C#, поэтому вы не можете изменять размер без создания нового массива. Однако списки - это совсем другая история. Вы можете сделать:
List<int> sample = oldList.AddRange(someOtherList);
// sample contains oldList with all elements of someOtherList appended to it.
Кроме того, с помощью LINQ это тривиальным легко конвертировать между списком и массивом с помощью методов расширения в
.ToList()
.ToArray()
. Если вы хотите сделать это с неопределенным количеством массивов, вы могли бы сделать что-то вроде этого:
public static class ArrayExtensions
{
public static T[] MergeArrays<T>(this T[] sourceArray, params T[][] additionalArrays)
{
List<int> elements = sourceArray.ToList();
if(additionalArrays != null)
{
foreach(var array in additionalArrays)
elements.AddRange(array.ToList());
}
return elements.ToArray();
}
}
И позвоните:
int[] mergedArray = initialArray.MergeArrays(array1, array2, array3 /* etc */);
Вы можете использовать LINQ Concat()
method:
using System.Linq;
// ...
var arr1 = new[] { 1, 2, 3 };
var arr2 = new[] { 4, 5, 6 };
var merged = arr1.Concat(arr2); // This returns an IEnumerable<int>
// If you want an actual array, you can use:
var mergedArray = merged.ToArray();
Дублировать. Уже обсуждалось здесь:
Most efficient way to append arrays in C#?
Вы не можете объединять массивы Массивы имеют фиксированный размер в C#. Существует множество способов сделать это с помощью перечислений и списка.
php merge не добавляет, он сливается. – user310291
Нет непосредственно не эквивалентны array_merge.
Если вы просто хотите, чтобы объединить два массива Существует уже другой вопрос: Merging two arrays in .NET
Если вы ищете для прямой замены массива слияния там нет.
Union is set operation. Это больше, чем просто добавление источников. 'new [] {1,2,3} .Union (new [] {2,3,4})' дает "1,2,3,4" вместо ожидаемого "1,2,3,2, 3,4" . Кроме того, он не гарантирует порядок. –
Я не голосовал, но Union использует оператор равенства для создания одного набора из результатов двух массивов. array_merge при работе с числовыми массивами будет включать в себя добавление всех результатов, включая дубликаты без проверки на равенство. – Gilles
@Martinho: Ой, спасибо за это. Я изменю свой ответ на использование 'Concat()' – Cameron