Я был поражен (и в ужасе), что следующий код работает в 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 двумерных массивов действительно такая хлипкая?