我有一个像这样的代码结构: For row = 1 To numRows Dim arrayIndex As Integer = 0 For column As Integer = startColumn To endColumn ' whatever code arrayIndex = arrayIndex + 1 NextNextDim arrayIndex As Integer = 0For column As Int
For row = 1 To numRows Dim arrayIndex As Integer = 0 For column As Integer = startColumn To endColumn ' whatever code arrayIndex = arrayIndex + 1 Next Next Dim arrayIndex As Integer = 0 For column As Integer = startColumn To endColumn ' whatever code arrayIndex = arrayIndex + 1 Next
不完全是代码,所以我真的不需要关于重构的建议,但我的问题是这个 – 用这段代码我得到编译器错误的第一个Dim arrayIndex As Integer = 0 – “变量’arrayIndex’隐藏一个变量封闭的.“据我所知,arrayIndex是第一个for循环的本地,在我们到达第二个循环时不应该存在.如果我尝试将arrayIndex的第二个声明更改为arrayIndex = 0,我得到错误“名称’arrayIndex’未声明”,正如我预期的那样.那么它是否可见?这与Dim关键字有关吗?关于如何解决这个问题的任何建议,除了将第二个索引变量命名为别的什么?
So is it visible, or not?
反过来说.外部变量在内部范围中可见.它无法访问,因为它尚未声明,因此其生命周期尚未开始.但该名称已存在于范围内.
Does this have something to do with the Dim keyword?
实际上,这只是对范围在VB中如何工作的限制.变量在其生命周期开始之前就存在于范围内.由于其名称被转移到嵌套范围,因此其他变量不能具有相同的名称.