【发布时间】:2013-06-21 08:21:33
【问题描述】:
我正在构建一个类 DLL,它将接受矩形和锯齿状数组(1D、2D、3D 等或锯齿状数组、锯齿状数组的锯齿状数组等)。 For Each Item in RectangularArray 负责处理矩形数组,但是锯齿状数组呢?使用For Each Item in JaggedArray 循环,Item 因为是一个数组。 For I As Integer = 0 to JaggedArray.GetUpperBound(0) 适用于锯齿状数组,但如果输入是锯齿状数组的锯齿状数组 ()()() 或 ()()()() 或 ()()()()( ) 等等等等等等?
**编辑 根据 Jods 的回答,我想出了:
Public Shared Function Flatten(source As IEnumerable(Of Object)) As Object
For Each item As Object In source
If TypeOf item Is IEnumerable(Of Object) Then
For Each item2 As Object In Flatten(item)
Return item2
Next
Else
Return item
End If
Next
End Function
和
For Each x In Flatten(ListOfTables)
If Not Tables.Contains(x) Then Tables.Add(x)
Next
但它因“无法将 'System.Char' 类型的对象转换为 'System.Collections.IEnumerable' 类型而崩溃。”在For Each x In Flatten(ListOfTables)。
这对我来说是全新的,任何想法我做错了什么?它返回的第一个条目是“c”c,但我希望它返回完整的字符串或“constraintenode”。
【问题讨论】:
-
递归是唯一的方法,而不是循环。
-
ja72,我不确定你的意思?你能详细说明一下吗?
-
查看@jods 解决方案。这就是我的意思。
标签: vb.net jagged-arrays