c# - c# 中是否有等效于 php array_merge 的函数

标签 c#

如果不是,创建它的最佳方法是什么?

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

最佳答案

此功能存在于 List 元素上。数组在 C# 中是固定宽度的项目,因此您不能在不创建新数组的情况下修改大小。但是,列表是另一回事。你可以这样做:

List<int> sample = oldList.AddRange(someOtherList);
// sample contains oldList with all elements of someOtherList appended to it.

此外,使用 LINQ 可以很容易地在 List 和 Array 之间进行转换

.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 */);

关于c# - c# 中是否有等效于 php array_merge 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395859/

相关文章:

c# - 从字符串中提取日期值

c# - 为什么 task.Wait 不会在非 ui 线程上死锁?还是我只是幸运?

c# - 泛型和继承

c# - Environment.GetCommandLineArgs() 解析是否可以重用?

c# - 如何将这两个功能合二为一呢?

c# - 为什么每次引用源集合时,Automapper 都会将一个具体集合映射到一个新实例?

c# - 是否可以为自定义结构重载 "array assignment"?

c# - 在 asp.net mvc 中显示图像

c# - 如何将 ActivityIndi​​cator 添加到外壳弹出窗口

c# - 使用 GitHub API 在一次提交中编辑多个文件