如何实现VB.Net中的二维数组迭代操作?

2026-05-06 12:561阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计498个文字,预计阅读时间需要2分钟。

如何实现VB.Net中的二维数组迭代操作?

在VB.NET中,以下代码通过一个二维字符串数组进行遍历,并使用MsgBox显示每个元素:

vbDim test2DArr As String(,)={{ A, B }, { C, D }}For Each s As String In test2DArr MsgBox(s)Next

运行这段代码时,将弹出四个消息框,依次显示A、B、C、D。

如何实现VB.Net中的二维数组迭代操作?

我对以下代码在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”,但是编译器坚持认为迭代2-d数组会产生一个字符串序列,而不是一串字符串数组.

我做错了什么,或者.Net的2-D阵列实现真的很脆弱?

is .Net’s implementation of 2-D arrays really that flimsy?

是. .NET中从未真正支持多维数组.我不确定它们为什么存在(与数组数组相反,即锯齿状数组:String()()).在任何情况下,所有支持都是针对一维数组的特殊情况而定制的.无论维度如何,数组的框架类型总是相同的,并且接口实现(在这种情况下为IEnumerable(Of T))是针对这种常见用例而定制的.

这意味着数组的类型始终是“字符串数组”,因此它始终实现接口IEnumerable(Of String).这解释了为什么你的第二个代码无法工作:为了使它工作,数组的类型必须是不同的.

本文共计498个文字,预计阅读时间需要2分钟。

如何实现VB.Net中的二维数组迭代操作?

在VB.NET中,以下代码通过一个二维字符串数组进行遍历,并使用MsgBox显示每个元素:

vbDim test2DArr As String(,)={{ A, B }, { C, D }}For Each s As String In test2DArr MsgBox(s)Next

运行这段代码时,将弹出四个消息框,依次显示A、B、C、D。

如何实现VB.Net中的二维数组迭代操作?

我对以下代码在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”,但是编译器坚持认为迭代2-d数组会产生一个字符串序列,而不是一串字符串数组.

我做错了什么,或者.Net的2-D阵列实现真的很脆弱?

is .Net’s implementation of 2-D arrays really that flimsy?

是. .NET中从未真正支持多维数组.我不确定它们为什么存在(与数组数组相反,即锯齿状数组:String()()).在任何情况下,所有支持都是针对一维数组的特殊情况而定制的.无论维度如何,数组的框架类型总是相同的,并且接口实现(在这种情况下为IEnumerable(Of T))是针对这种常见用例而定制的.

这意味着数组的类型始终是“字符串数组”,因此它始终实现接口IEnumerable(Of String).这解释了为什么你的第二个代码无法工作:为了使它工作,数组的类型必须是不同的.