【发布时间】:2017-06-07 19:58:49
【问题描述】:
我有一个List<object>,其中包含字符串甚至其他列表。
List<object> NewArray = new List<object>();
所以基本上这个列表包含一个混合物......
作为健全性检查,我想将内容打印到控制台。我首先遍历并测试该元素是否为列表。如果不是,那么它将是一个字符串,可以打印到控制台。如果它是一个列表,我想遍历并将字符串内容打印到控制台,但使用制表符来缩进它。
到目前为止我有这个:
for (int outer = 0; outer < NewArray.Count; outer++)
{
var innerList = NewArray[outer];
if (innerList.GetType().IsGenericType && innerList.GetType().GetGenericTypeDefinition() == typeof(List<>))
{
for (int inner = 0; inner < innerList.Count; inner++)
{
//print string
}
}
else
{
//print string
}
}
我不想使用foreach 循环,因为我不确定列表的顺序是否得到保证,并且将来会添加一个增量编号(可以由内部和外部变量提供)。
我遇到的问题是这里的错误:
inner < innerList.Count
这是:
运算符“
我需要做些什么来克服这个问题?我不确定这是实现最终结果的最有效方式,但是....
【问题讨论】:
-
不,不。检查它是否是非通用 IEnumerable,然后对其进行转换并对其进行 foreach。使其成为递归方法。完成。
-
拥抱 OOP!您正在通过列出随机废话来与语言作斗争。为您保留在列表中的任何内容创建强类型。通过覆盖
ToString()方法或添加Display()方法或与接口类似的方法,让这些类型自己处理打印。 -
看起来
Count可能是 IEnumerable.Count() 扩展方法。如果 innerList 是 Object,我不知道你是怎么做到的;我们能看到完整的代码吗? -
@itsme86 "随机废话" +1