【发布时间】:2011-08-24 15:45:22
【问题描述】:
我对以下代码在 Vb.Net 中工作感到惊讶(和恐惧)
Dim test2DArr As String(,) = {{"A", "B"}, {"C", "D"}}
For Each s As String In test2DArr
MsgBox(s)
Next
运行时,会弹出四个消息框,分别显示“A”、“B”、“C”,然后是“D”。
换句话说,它的行为与:
Dim test1DArr As String() = {"A", "B", "C", "D"}
For Each s As String In test1DArr
MsgBox(s)
Next
有人可以解释这个“功能”吗?我需要在这里强加一些显然不受支持的结构。上面的第一个代码示例应该是:
Dim test2DArr As String(,) = {{"A", "B"}, {"C", "D"}}
For Each arr As String(,) In test2DArr
MsgBox(arr(0) & ", " & arr(1))
Next
并且应该产生两个消息框:“A,B”和“C,D”,但是编译器坚持遍历二维数组会产生字符串序列,而不是字符串数组序列。
是我做错了什么还是 .Net 的二维数组实现真的那么脆弱?
【问题讨论】:
-
+1 这对我来说绝对是迷人的。如果其他读者想亲自体验,我设置了this situation up here。
标签: .net arrays multidimensional-array iteration