2012-01-07 62 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