【问题标题】:Using a foreach loop on a List of two types?在两种类型的列表上使用 foreach 循环?
【发布时间】:2013-04-05 09:48:54
【问题描述】:

我知道我可以使用foreach 循环,如下所示:

List<int> handles = GetHandles();

foreach (int handle in handles)
{
    // do stuff
}

我可以对SortedList 执行以下操作吗?

SortedList<string, int> namesAndHandles;

编辑:对不起,打错了。它应该是SortedList。本质上,我想将其转换为 IDictionary 并根据名称访问句柄

【问题讨论】:

  • .NET 中没有List&lt;T1, T2&gt;。是你的自定义类吗?
  • @MarcinJuraszek:不;这就是他的要求。
  • Dictionary 怎么样?
  • @MarcinJuraszek 抱歉,我打错了。我的意思是SortedList

标签: c# list foreach


【解决方案1】:

没有 List&lt;string, int&gt; 这样的东西 - 没有带有两个类型参数的 List&lt;,&gt; 类型。如果您有一组名称/句柄对,您应该使用 List&lt;Tuple&lt;string, int&gt;&gt; 或创建自己的 NameAndHandle 类。两者都可以与foreach 一起正常工作。

(如果您真的想要,可以创建自己的 List&lt;TFirst, TSecond&gt; 类,但我真的不建议这样做。)

【讨论】:

  • 值得一提的是foreach循环将在List&lt;Tuple&lt;string, int&gt;&gt;上正常工作。
  • 嗨 Jon,对不起,我的意思是 SortedList 我会考虑使用元组
  • @ryrich: SortedList 真的是一张地图——不幸的是,它被命名为 IMO。
  • @JonSkeet 如果我有List&lt;string&gt;List&lt;int&gt;,是否可以根据这些列表填充List&lt;Tuple&lt;string, int&gt;&gt;
【解决方案2】:

我打赌 List> 会满足你的需求。您可以迭代集合,.Key 属性保存字符串,.Value 保存 int

【讨论】:

  • 除非它们真的键/值对,否则我不会这样做。我会避免将KeyValuePair 用作“具有两个类型参数来保存两个值的类型”。
猜你喜欢
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2023-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多