【问题标题】:c# copying an arraylist to arrayc# 将arraylist复制到数组
【发布时间】:2011-06-14 08:04:13
【问题描述】:

我想知道如何将 3 个数组列表中的所有信息发送到 一个数组。

Arraylist clubs = new Arraylist
Arraylist spades = new Arraylist
Arraylist hearts = new Arraylist.
int[] array = new int[52]

我在每个数组列表中都有 1 到 13 的值,现在我想要 将三个数组列表的所有值复制到数组[52]。

【问题讨论】:

  • 请努力并发布至少可以编译的代码。如果有一个特定的地方您需要帮助,请将其保留为未编译并明确说明您需要该部分的帮助。
  • 我想你可能忘记了钻石

标签: c# arraylist playing-cards


【解决方案1】:
clubs.CopyTo(array, 0);
spades.CopyTo(array, 13);
hearts.CopyTo(array, 26);
diamonds.CopyTo(array, 39);

【讨论】:

  • 这可能更快,但比@Daren 的方法更难维护。
  • 感谢您的回答,当我使用 Fivers 方法时,我收到错误消息“源数组中的至少一个元素无法转换为目标数组类型”我该怎么办?跨度>
【解决方案2】:
var array = clubs.Concat(spades).Concat(heart).ToArray();

编辑:哎呀,TIL,ArrayList 是我完全忘记的那些类型之一。无论如何不要打扰它:改用List<T>

List<int> clubs = new List<int>(){1, 2, 3};
List<int> hearts = new List<int>(){4, 5, 6};
List<int> spades = new List<int>(){7, 8, 9};
var array = clubs.Concat(hearts).Concat(spades).ToArray();  

很抱歉发布无法编译的答案。但是话又说回来...... OP 也没有编译...... ;)

【讨论】:

  • 这不会编译 - Concat 是在 IEnumerable&lt;T&gt; 上定义的,而 ArrayList 没有实现。
【解决方案3】:
ArrayList clubs = new ArrayList();
ArrayList spades = new ArrayList();
ArrayList hearts = new ArrayList();

int[] array = new int[52];

clubs.ToArray(typeof(int)).CopyTo(array, 0);
spades.ToArray(typeof(int)).CopyTo(array, clubs.Count);
hearts.ToArray(typeof(int)).CopyTo(array, spades.Count + clubs.Count);

代码不会检查每个 ArrayList 的长度,因此请确保它们不超过 13。

【讨论】:

    【解决方案4】:

    这是一个CopyTo ArrayList method。还有一个ToArray 方法。区别?使用 ToArray 返回数组,因此为您创建它。唯一的事情是,在这种情况下,您需要将其转换为整数数组。性能明智?好吧,它们都是 O(n) 并且无论如何都调用 Array.Copy。

    这取决于你是否已经创建了数组来决定你想使用哪一个。如果您要做的不仅仅是 1:1 复制,CopyTo 有一些额外的选项可能会引起您的兴趣。

    【讨论】:

      猜你喜欢
      • 2013-05-05
      • 2021-12-09
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多