C# 在c语言中是否有与php数组_merge等效的函数#

C# 在c语言中是否有与php数组_merge等效的函数#,c#,C#,如果不是的话,最好的方法是什么 注意:合并不仅仅是追加,它还融合了相同的键。您可以使用: 使用System.Linq; // ... var arr1=new[]{1,2,3}; var arr2=new[]{4,5,6}; var merged=arr1.Concat(arr2);//这将返回一个IEnumerable //如果需要实际阵列,可以使用: var mergedArray=merged.ToArray(); 重复。这里已经讨论过: 不能合并数组,因为数组在C#中具有固定大小。使用

如果不是的话,最好的方法是什么

注意:合并不仅仅是追加,它还融合了相同的键。

您可以使用:

使用System.Linq;
// ...
var arr1=new[]{1,2,3};
var arr2=new[]{4,5,6};
var merged=arr1.Concat(arr2);//这将返回一个IEnumerable
//如果需要实际阵列,可以使用:
var mergedArray=merged.ToArray();

重复。这里已经讨论过:


不能合并数组,因为数组在C#中具有固定大小。使用可枚举项和列表可以实现这一点。

此功能存在于列表元素中。数组在C#中是固定宽度的项,因此在不创建新数组的情况下无法修改大小。然而,清单是另一回事。你可以做:

List<int> sample = oldList.AddRange(someOtherList);
// sample contains oldList with all elements of someOtherList appended to it.
扩展方法。如果要对数量不确定的数组执行此操作,可以执行以下操作:

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();
     }
}

否不直接等同于数组_merge

如果您只想合并两个阵列,则还有另一个问题:


如果您正在寻找直接数组合并替换,则没有。Union是一个集合操作。它不仅仅是附加源代码
new[]{1,2,3}。并集(new[]{2,3,4})
给出的是“1,2,3,4”,而不是预期的“1,2,3,2,3,4”。此外,它不能保证顺序。我没有否决投票,但Union使用相等运算符从两个数组的结果创建一个集合。处理数值数组时,数组\合并将包括附加所有结果,包括重复的结果,而不进行相等性测试。@Martinho:Oops,谢谢。如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个值,我将把答案改为使用
Concat()
。但是,如果数组包含数字键,则后面的值将不会覆盖原始值,而是追加。来源:@HelloWorld:好的,谢谢。我把答案改成使用Concat;在这种情况下,永远不可能有字符串键,因为这将是C#中的一个字典,而不是一个数组。php merge不会追加,而是合并。
.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 */);