【问题标题】:Generic lists in array list数组列表中的通用列表
【发布时间】:2014-11-17 17:05:12
【问题描述】:

有一个包含通用列表的数组列表。如何访问通用列表中的变量?但我想通过数组列表访问变量。

ArrayList TheList = new ArrayList();

List<NewType>[] GenericLists = new List<NewType>[4];

GenericLists[0].Add(variable);
       .
       . 
       .
       for (int i = 0; i < 4; i++)
            {
                TheList.Add(GenericLists[i]);
            }

如何通过数组列表打印变量?

【问题讨论】:

  • 作为一般规则,混合和匹配数组和集合是个坏主意。
  • 你有一个 of 个列表的数组,不是“数组列表”,也不是 ArrayList
  • 这是我项目的一部分。所以我必须混合。
  • 为什么不直接使用List&lt;List&lt;NewType&gt;&gt;?这样你就不必投射物品了。
  • 你也不应该使用ArrayList总是有比 htat 更好的解决方案。

标签: c# arrays list arraylist generic-list


【解决方案1】:

您需要遍历 ArrayList 的项目并将每个项目转换为 List&lt;NewType&gt; 然后您可以遍历列表中的项目并显示它们或您想要的任何内容...

foreach(var list in TheList)
{
   var currentList = (List<NewType>)list;
   ...
}

或者你可以使用 Linq 方法来转换它们:

foreach(var list in TheList.Cast<NewList>())

这些假设数组列表中的所有项目都是NewList 类型。否则,您将在运行时收到InvalidCastException。为避免这种情况,您可以使用isas 运算符来检查类型是否为NewList,或者您可以使用OfType 方法为您执行此操作:

foreach(var list in TheList.OfType<NewList>())

【讨论】:

  • 提及类型检查可能是个好主意,因为我们在这里迭代 ArrayList...
  • 这是一个很好的答案。但我确实认为值得重申 D Stanley 和 Bradley 的观点,即如果可能的话,应该简单地更改原始代码,使其首先不使用ArrayListList&lt;List&lt;T&gt;&gt; 在这里更合适。如果它在答案中,也许OP会更认真地对待它。 :)
猜你喜欢
  • 1970-01-01
  • 2016-03-23
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
相关资源
最近更新 更多