【发布时间】:2015-07-02 15:30:09
【问题描述】:
我声明我的数组
Dim A(N) As Integer
当我从1 To N 或0 To N-1 循环时,一端或另一端有一个额外的值。
发生了什么事?
(旨在成为规范的问题/答案。)
【问题讨论】:
-
您将在此了解其背后的原因:stackoverflow.com/questions/506207/…
标签: arrays vb.net off-by-one
我声明我的数组
Dim A(N) As Integer
当我从1 To N 或0 To N-1 循环时,一端或另一端有一个额外的值。
发生了什么事?
(旨在成为规范的问题/答案。)
【问题讨论】:
标签: arrays vb.net off-by-one
在 VB.NET 中,数组几乎总是*具有0 的下限,并声明提及其上限,而不是长度。
他们确实在早期更改了 VB.NET 语法,以便您在需要时提醒自己:
Dim A(0 To N) As Integer
0 不能是其他任何东西(例如 1 或常量零)。
您可以使用循环遍历所有 VB.NET 数组索引
For i = LBound(A) To UBound(A)
或者,更简单地说,
For i = 0 To N
(*) 您可以使用 .NET Framework 创建具有其他下限的数组,但您需要将它们称为 Array 并因此使用后期绑定(可能是 Option Strict Off)。
【讨论】:
Array.CreateInstance 的重载。只是任何被发现编写此类代码的人都不应再被允许靠近计算机。