2017-02-28 48 views
4

我在C下面的代碼:循環無第一條語句(C到Visual Basic)

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 

但第二圈讓我困惑了一下。 有沒有辦法讓這個循環,或者我只需要在這裏把一些常數值?

+1

我想,'因爲我=我要(Nb *(Nr + 1)) - 1'可能值得一試。我打了VB很長一段時間,所以ymmv。 – WhozCraig

+0

@WhozCraig我也這麼想!現在我正在檢查此代碼 –

回答

3

我得到了解決:

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

感謝@WhozCraig - 他給予同樣的解決方案給我。

1

只是爲了有更多的選擇,另一個例子是:

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

然後使用LINQ表達式,例如(恰好彌補):

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

我閱讀了有關枚舉的內容,並發現它很有用。所以我可以使用Enumerable變量而不是循環使用Select。但我無法理解括號內的陳述。你能爲我澄清一下嗎? 我使用'function(i)'得到錯誤,因爲我在前面的循環中使用'i'。 第二個問題:對於我的第二個循環,我必須使用'Enumerable.Range(i,(Nb *(Nr + 1)) - 1)',不是嗎? –

+1

我已經詳細闡述了一個編制的例子,希望能夠澄清你的問題。另外,是的,如果lambda中的變量已經在你的代碼中使用過,你將不得不改變它。最後,考慮到你的問題中陳述的變量,是的,你的第二個循環看起來像你的評論。 –

+0

現在我明白了!謝謝你的澄清! –