VB中如何同时循环两个变量并缓存高成本访问变量?
在VB中实现多变量循环的方案
要实现你提到的C#多变量初始化的for循环逻辑,VB没有直接对应的语法,但可以通过两种方式达成需求,同时满足缓存k变量的要求(避免重复访问带来的成本):
方法1:先缓存k,使用For循环
先将k的值缓存到变量j中(仅访问一次k),再利用VB的For循环实现逻辑。因为VB的For循环是包含上限值的,所以要把原C#的i < j转换为i To j - 1:
' 先缓存k的值,只访问一次 Dim j As Integer = k ' 循环逻辑对应C#的for (int i=0; i<j; i++) For i As Integer = 0 To j - 1 DoSomeStuff() Next
如果k的值为0,j-1会是-1,循环不会执行,和C#的逻辑完全一致。
方法2:使用Do While循环(更贴近C#的for结构)
这种写法和C#的for循环逻辑结构几乎一致,先初始化变量、判断循环条件、执行代码、递增变量:
Dim i As Integer = 0 ' 缓存k到j,仅访问一次 Dim j As Integer = k Do While i < j DoSomeStuff() i += 1 Loop
这种方式不需要调整循环上限,逻辑更直观,和C#代码的执行流程完全匹配。
为什么你的尝试写法不行?
VB的For语句不支持同时声明多个循环变量,也不支持And连接多个To子句,所以For i As Integer = 0 To 5 And j As Integer = 0 To 5这种语法是不符合VB规范的。
内容的提问来源于stack exchange,提问作者Nocxy
相关产品推荐
相关产品推荐

