如何在 VB.net for 循环中为无符号整数索引指定负步长
How do you specify a negative step for an unsigned integer index in a VB.net for-loop
如何在 VB.net
中的 for 循环的无符号整数索引上指定负步长
以下代码将无法编译:
Option Strict
For i as uLong = uLong.maxvalue To 0 Step -1UL
...
next i
给出这个:
错误:BC30439 常量表达式无法在 'ULong'
类型中表示
无符号 Int16/Int32/Int64 不能表示为负值,没有办法做到这一点,参见 ULong.MinValue.
这里有两个选择:
使用while/until循环模拟负步:
Dim i As ULong = ULong.MaxValue
While (i <> ULong.MinValue)
Console.WriteLine(i)
i -= 1UL ' Decrement current value by desired amount.
End While
设置/removeintchecksvb的编译器参数,然后可以对无符号数据类型使用负值。
请注意,您可以通过解决方案的配置页面以引导方式设置此参数,在“高级编译选项”中,勾选“删除整数溢出检查".
或者你可以试试这个..
Dim a As Integer = -1
For i As ULong = ULong.MaxValue To 0 Step CULng(a)
Next i
如何在 VB.net
中的 for 循环的无符号整数索引上指定负步长以下代码将无法编译:
Option Strict
For i as uLong = uLong.maxvalue To 0 Step -1UL
...
next i
给出这个: 错误:BC30439 常量表达式无法在 'ULong'
类型中表示无符号 Int16/Int32/Int64 不能表示为负值,没有办法做到这一点,参见 ULong.MinValue.
这里有两个选择:
使用while/until循环模拟负步:
Dim i As ULong = ULong.MaxValue While (i <> ULong.MinValue) Console.WriteLine(i) i -= 1UL ' Decrement current value by desired amount. End While
设置/removeintchecksvb的编译器参数,然后可以对无符号数据类型使用负值。
请注意,您可以通过解决方案的配置页面以引导方式设置此参数,在“高级编译选项”中,勾选“删除整数溢出检查".
或者你可以试试这个..
Dim a As Integer = -1
For i As ULong = ULong.MaxValue To 0 Step CULng(a)
Next i