【问题标题】:C# Convert LinkedList of tuples to Array of tuplesC#将元组的LinkedList转换为元组的数组
【发布时间】:2020-05-04 09:30:51
【问题描述】:

我有以下链表:

private LinkedList<Tuple<string, string>> textList = 
  new LinkedList<Tuple<string, string>> ();

链表由未知数量的个元素组成。

我想把这个链表转换成一个元组数组。我尝试使用CopyTo() 方法:

Tuple<string, string>[] array;
textList.CopyTo(array, 0);

但这似乎不起作用,这里我得到 运行时错误:

使用未签名的局部变量'array'

我使用的是正确的方法还是有其他方法可以做到这一点?

【问题讨论】:

  • Linq? Tuple&lt;string, string&gt;[] array = textList.ToArray();
  • 您当前的CopyTo 方法不起作用,因为您从未实例化要复制到的数组。您需要做Tuple&lt;string, string&gt;[] array = new Tuple&lt;string, string&gt;[size],这意味着知道阵列必须预先设置多大。正如@DmitryBychenko 建议的那样,使用ToArray 更容易
  • 还要注意LinkedListTuple 可能都不应该使用。通常使用 ValueTuple 比使用 Tuple 更好,而 LinkedList 实际上比替代方案更好的情况很少
  • ValueTuple 与常规 Tuple 有何区别?我选择链接列表是因为我希望能够在恒定时间内为未知数量的元素添加元素。
  • 好的,谢谢你,我可能也会使用 List 进行基准测试。在 CS 中学习 F# 后开始学习 C#,其中链表似乎表现得非常好。

标签: c# arrays linked-list type-conversion


【解决方案1】:

您可以尝试使用 Linq (.ToArray()) 并让 .net 为您创建数组:

using System.Linq;

...

private LinkedList<Tuple<string, string>> textList = 
  new LinkedList<Tuple<string, string>>();

...

Tuple<string, string>[] array = textList.ToArray();

【讨论】:

  • 谢谢!这是我最终使用的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2012-04-18
  • 2020-04-11
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
相关资源
最近更新 更多