2012-01-07 67 views
0

我有一個函數需要以UInt作爲參數。 I'm using the .Net Micro Framework從VB.Net中的UInt減去

一個簡單的例子,我想這樣做:

 Dim x As UInteger 
     For x = 0 To 100 
      Port.SetDutyCycle(x) 
      Thread.Sleep(10) 
     Next 
     For x = 100 To 0 Step -1 
      Port.SetDutyCycle(x) 
      Thread.Sleep(10) 
     Next 

第二For將無法​​正常編譯-1不能表示爲uint。所以接下來我想...

 For y As UInteger = 0 To 100 
      Port.SetDutyCycle(100 - y) 
      Thread.Sleep(10) 
     Next 

這不會編譯爲- y強制轉換爲長,這則不能縮小到UINT。下一步嘗試:

  Port.SetDutyCycle(DirectCast(100 - y, UInteger)) 

100 - y將無法​​編譯爲「類型‘整數’的價值不能被轉換爲‘UInteger’」

所以......我怎樣才能輕鬆搞定,從一個遞減UInteger 100到0在一個循環?

按照漢斯帕桑特的回答,第二個代碼塊完全在香草淨

回答

1

你根本都忘了申報年。修復:生成

For y As UInteger = 0 To 100 
     Port.SetDutyCycle(100 - y) 
     Thread.Sleep(10) 
    Next 

的警告,因爲您有非標準的編譯設置。項目+屬性,編譯選項卡,警告配置部分。 「隱式轉換」選項的正常設置爲無。如果將它設置爲Warning,您只需要進行明確的轉換即可:

 Port.SetDutyCycle(CUInt(100 - y)) 
+0

嘗試在VS中 - 第2行#從Long到UInteger的隱式轉換。我正在使用可能導致問題的.Net Micro Framework?我會嘗試在香草.Net4 – Basic 2012-01-07 18:16:32

+0

嗯,它在香草.Net4工作 - 道歉我不認爲這將是重大的。我將更新Q – Basic 2012-01-07 18:18:07

+0

使用變通辦法更新的帖子。 – 2012-01-07 18:34:47