【问题标题】:Loop without first statement (C to visual basic)没有第一个语句的循环(C 到 Visual Basic)
【发布时间】:2023-03-26 11:04:01
【问题描述】:

我在 C 中有下一个代码:

for (i = 0; i < Nk; ++i)
    {
        // some actions using i as an index
    }
for (; (i < (Nb * (Nr + 1))); ++i)
    {
        // another actions. Here i starts from value in previous loop
    }

现在我尝试将其转换为 Visual Basic(在 VB 6.0 中真的...) 第一部分很简单:

For i = 0 To Nk - 1                                                             
    ' my actions
Next

但是第二个循环让我有点困惑。 有什么方法可以制作这个循环,或者我只需要在这里放一些常量值?

【问题讨论】:

  • 我想For i = i To (Nb * (Nr + 1))-1 可能值得一试。很久没有接触VB了,所以ymmv。
  • @WhozCraig 我也这么认为!现在我正在检查这段代码

标签: c vb.net loops for-loop vb6


【解决方案1】:

我得到了解决方案:

 For i = i To (Nb * (Nr + 1)) - 1
     ' my actions
 Next

感谢@WhozCraig - 他给了我同样的解决方案。

【讨论】:

    【解决方案2】:

    只是为了有更多的选择,另一个例子可能是:

    dim lst = Enumerable.Range(0, (Nb * (Nr + 1)) - 1)
    

    然后使用LINQ Expressions,例如(刚编出来的):

    lst.Select(function(x) 
                 if x mod 2 = 0 then
                    return x * 2
                 else 
                    return x
                 end if
                end function) 
    

    【讨论】:

    • 我阅读了 Enumeration 并发现它很有用。所以我可以使用 Enumerable 变量而不是使用 Select 的循环。但我无法理解括号中的陈述。你能为我澄清一下吗?我在使用 function(i) 时遇到错误,因为我在前一个循环中使用了 i。第二个问题:对于我的第二个循环,我必须使用Enumerable.Range(i, (Nb * (Nr + 1)) - 1),不是吗?
    • 我已经详细阐述了一个虚构的例子,希望这能澄清你的问题。另外,是的,如果 lambda 中的变量已在您的代码中使用,您将不得不更改它。最后,考虑到您的问题中陈述的变量,是的,您的第二个循环将类似于您的评论。
    • 现在我明白了!感谢您的澄清!
    • 请注意这个漂亮的代码是 VB.Net 并且不会在 VB6 中编译。 Mikhail_Sam,我建议你只用vb6 标记你的问题,而不是vb.net。你在你的问题中说你是
    • @MarkJ 哦,谢谢!这是非常重要的!我设置vb.net也只是因为我想找到任何解决方案并希望我可以手动将一些vb.net代码翻译成vb6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多