当前位置 : 主页 > 编程语言 > c语言 >

如何在VB .NET中解决此范围问题?

来源:互联网 收集:自由互联 发布时间:2021-06-24
我有一个像这样的代码结构: 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中如何工作的限制.变量在其生命周期开始之前就存在于范围内.由于其名称被转移到嵌套范围,因此其他变量不能具有相同的名称.

网友评论