有没有办法在vb.net循环中使用非线性步长?
我想在vb中执行以下c语句有没有办法在vb.net循环中使用非线性步长?,vb.net,Vb.net,我想在vb中执行以下c语句 for(int i = 2^20; i > 0; i/=2) { printf("%d\n",i); } 在vb中,将类似于: For i As Integer = 2^32 to 0 Step /2 Console.Out.Writeline("{0}", i) Next 具体来说,每次迭代i除以2的变量不是 法律vb 有没有一种方法可以使用允许的For语句来编写此代码?没有,VB中的For循环较短,但灵活性较差 显而易见的解决办法当然是
for(int i = 2^20; i > 0; i/=2)
{
printf("%d\n",i);
}
在vb中,将类似于:
For i As Integer = 2^32 to 0 Step /2
Console.Out.Writeline("{0}", i)
Next
具体来说,每次迭代i除以2的变量不是
法律vb
有没有一种方法可以使用允许的For语句来编写此代码?没有,VB中的For循环较短,但灵活性较差 显而易见的解决办法当然是一个循环
' untested
Dim i As Integer = 2^30 ' 2^32 will overflow
While i >= 0
Console.Writeline("{0}", i)
i = i Div 2
End While
有两种典型的方法:
前一种方法是我通常使用的方法;我相信LINQ包含了一些方法来促进后一种方法(比如Enumerable.Range),但我不知道细节。只是一个指针:
^
在C和VB中意味着不同的东西。还有一个细节,你不需要Out
in控制台.Out.Writeline()
这个循环将运行一段时间!)更严肃地说,我认为这是一个很好的答案:因为C/C++for()循环总是可以重写为while()循环,所以当您转换为VB时,“非标准”for()循环转换为while而不是for是有意义的。