gpt4 book ai didi

.net - 在VB.Net中遍历二维数组

转载 作者:行者123 更新时间:2023-12-04 23:01:30 25 4
gpt4 key购买 nike

我对以下代码在 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的二维数组实现真的那么脆弱?

最佳答案

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



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

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

关于.net - 在VB.Net中遍历二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com