【发布时间】:2012-02-05 00:12:21
【问题描述】:
我有一个需要将UInt 作为参数的函数。 I'm using the .Net Micro Framework
作为一个简单的例子,我想做这样的事情:
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 强制转换为 Long,然后不能缩小为 UInt。下次尝试:
Port.SetDutyCycle(DirectCast(100 - y, UInteger))
100 - y 不会编译为“'Integer' 类型的值无法转换为 'UInteger'”
那么...我怎样才能轻松地获得一个循环从 100 递减到 0 的 UInteger?
根据 Hans Passant 的回答,第二个代码块在 vanilla .Net 中完美运行
【问题讨论】:
标签: vb.net types type-conversion .net-micro-framework