Arrays 这段关于数组的代码是如何工作的?

Arrays 这段关于数组的代码是如何工作的?,arrays,vb.net,split,Arrays,Vb.net,Split,下面的代码将字符串拆分为七个字符的字符串,每个字符串组成一个数组。有人能详细解释一下它是如何工作的吗 Dim orig = "12344321678900987" Dim res = Enumerable.Range(0,orig.Length\8).[Select](Function(i) orig.Substring(i*8,8)) 这段代码使用了一些简洁的语言技巧来减少将字符串分解成更小的段所需的代码量。从内到外,首先有一个: 这是一种“内联”创建子函数或函数的奇特方式。它本质上等同于:

下面的代码将字符串拆分为七个字符的字符串,每个字符串组成一个数组。有人能详细解释一下它是如何工作的吗

Dim orig = "12344321678900987"
Dim res = Enumerable.Range(0,orig.Length\8).[Select](Function(i) orig.Substring(i*8,8))
这段代码使用了一些简洁的语言技巧来减少将字符串分解成更小的段所需的代码量。从内到外,首先有一个:

这是一种“内联”创建子函数或函数的奇特方式。它本质上等同于:

Function subStr(ByVal i As Integer) As String
    Return orig.Substring(i * 8, 8)
End Function
下一部分使用,及其生成一系列数字以输入lambda

Enumerable.Range(0, orig.Length \ 8)
这是一种更奇特的写作方式:

For i As Integer = 0 To (orig.Length \ 8)
    'Do something with i
End For
[Select]
是一个小魔术,它将当前的
i
放入循环(或范围),并允许使用它。在本例中,它是:

subStr(i)
因此,这个简洁的单行作业也可以写成:

Dim orig As String = "12344321678900987"
Dim res as String()
For i As Integer = 0 To (orig.Length \ 8)
    Array.Resize(res, res.Length + 1)
    res(res.Length - 1) = subStr(i)
End For

Function subStr(ByVal i As Integer) As String
    Return orig.Substring(i * 8, 8)
End Function

请花点时间仔细阅读:这不是辅导服务。花点精力研究MSDN。显示.net framework的内部工作方式。对于其他示例:
subStr(i)
Dim orig As String = "12344321678900987"
Dim res as String()
For i As Integer = 0 To (orig.Length \ 8)
    Array.Resize(res, res.Length + 1)
    res(res.Length - 1) = subStr(i)
End For

Function subStr(ByVal i As Integer) As String
    Return orig.Substring(i * 8, 8)
End Function