关于未知类型的foreach

时间:2010-01-21 15:05:51

标签: c# foreach

我需要能够循环一个未知类型,例如

  foreach (var test in viewData["foobar"])
  {
  }

任何建议

2 个答案:

答案 0 :(得分:4)

您必须至少将viewData["foobar"]投射到IEnumerable,才能在object变量中添加test

演员表可能会失败,因此您首先要检查viewData["foobar"]是否通过IEnumerableis运算符实际实施as

if(viewData["foobar"] is IEnumerable)
    foreach(var test in (IEnumerable)viewData["foobar"])

请注意,这是使用System.Collections.IEnumerable,而不是System.Collections.Generic.IEnumerable<>

答案 1 :(得分:0)

如果viewData["foobar"]属于类型对象,则无法迭代它。使用foreach循环进行迭代的唯一方法是使用IEnumerator派生类型。